見出し画像

【R言語】超初心者の備忘録~geom_signifを最新版にしたらdplyrが使えなくなった?!

2020年4月18日にdplyrのエラーが出ないようにする方法を追記しました

こんにちは。プログラミング超初心者のえいこです。

前回の記事で、geom_signifの最新版をインストールしました。

こんなにも前回記事でもエラーを体験してきたのに、またグラフを描こうとしたらエラーの嵐が...

なぜかグラフを描くときに必要なggplot2とdplyrの両方が使えなくなってしまった..."library()"で呼び出すと、こんなエラーメッセージが出てしまうようになりました。

> library(ggplot2) #ggplot2を呼び出す
警告メッセージ: 
パッケージ ‘ggplot2’ はバージョン 3.6.3R の下で造られました  
> library(dplyr) #dplyrを呼び出す

次のパッケージを付け加えます: ‘dplyr’ 

以下のオブジェクトは ‘package:stats’ からマスクされています: 

    filter, lag 

以下のオブジェクトは ‘package:base’ からマスクされています: 

    intersect, setdiff, setequal, union 

警告メッセージ: 
パッケージ ‘dplyr’ はバージョン 3.6.3R の下で造られました  

いろいろ対処したのですが、原因はよくわからず...

とりあえずやったことは

1. Rを最新版にした(3.6.2→3.6.3)
 どうやら2020年2月29日にマイナーアップデートがあったようです

2. マスクされているpackageを削除

1. Rを最新版にした

ggplot2をインストールした時にもこんな警告メッセージが出ていました。

警告メッセージ: 
パッケージ ‘ggplot2’ はバージョン 3.6.3R の下で造られました

この警告メッセージが尾を引かなければ良いのですが...的なことをこの記事でも言っていました。

この記事を書いているときには正直この警告メッセージの意味が全く分かっていなかったのですが...今回調べてみてこのメッセージの意味を改めて知ることとなりました。

実は私がインストールしたRはバージョンが3.6.2。Rをインストールした時の記事にしっかりバージョンの番号が書いてありました。

2019年2月29日にマイナーアップデートがあり、Rのバージョンが3.6.3になっていたのです。

この警告メッセージは、「あなたが使っているRのバージョンとインストールしたggplot2のバージョンが合ってませんよ」ってことでした。

ってことは、Rを最新版にすれば良いのでは?

ということで、最新版のRをインストールするのですが...疑問が

・今までインストールしてきたパッケージって引き継がれるの?
・インストールしてきたパッケージもバージョンアップする必要があるの?

この疑問のCRANの答えがこちら。

2.8 What’s the best way to upgrade?
That’s a matter of taste. For most people the best thing to do is to uninstall R (see the previous Q), install the new version, copy any installed packages to the library folder in the new installation, run update.packages(checkBuilt=TRUE, ask=FALSE) in the new R and then delete anything left of the old installation. Different versions of R are quite deliberately installed in parallel folders so you can keep old versions around if you wish.
For those with a personal library (folder R\win-library\x.y of your home directory, R\win64-library\x.y on 64-bit builds), you will need to update that too when the minor version of R changes (e.g. from 3.0.2 to 3.1.0). A simple way to do so is to copy (say) R\win-library\3.0 to R\win-library\3.1 before running update.packages(checkBuilt=TRUE, ask=FALSE)

要約すると、

1. 一番良いのは前のバージョンをアンインストール
2. 新しいバージョンをインストール
3. インストールしてあったパッケージを新しいバージョンのlibrary folderにコピー
4. 新しいバージョンを起動
5. ”update.packages(checkBuilt=TRUE, ask=FALSE)”を実行
6. 古いバージョンをぜーんぶ削除
これをしておけばOK!
personal library(R\win-library\x.y)をホームディレクトリにしている場合は(私の場合もそうなっていました)古い"win-library"から新しい"win-library"にコピーしてからupdate.packagesを実行するようにしましょう。

とりあえず、この手順に従ってRをアップデートすることにしました。

プログラムのアンインストールの仕方は、(Windows10の場合)

スタートボタン→設定(歯車のマーク)→アプリ

の中から選んで、アンインストールします。

Rのインストールの仕方は、CRANのサイトから。

超マイナーチェンジだったからか、"win-library"の中に新しいフォルダは作成されていませんでした。

とりあえず、update.packages~を実行。

バージョンアップが完了したので、もう一度グラフを描くために”library()”を使って呼び出してみます。

> library(ggplot2) #ggplot2を呼び出す 
> library(dplyr) #dplyrを呼び出す

次のパッケージを付け加えます: ‘dplyr’ 

以下のオブジェクトは ‘package:stats’ からマスクされています: 

    filter, lag 

以下のオブジェクトは ‘package:base’ からマスクされています: 

    intersect, setdiff, setequal, union 

やはりこのメッセージが表示されて、無視して続けようとすると...

> setwd("~/R/data_frames") #ファイルを呼び出すディレクトリを指定する
> rawdata<- read.csv("xtreatment.csv",header=T,sep = ",") #demo変数にcsvファイルを読み込む
> data_mean_sd <- 
+   demo %>%
+   group_by(treatment) %>% 
+   summarize(mean = mean(value), sd = sd(value)) #平均値と標準偏差のリストを作る
UseMethod("group_by_") でエラー: 
  'group_by_' をクラス "function" のオブジェクトに適用できるようなメソッドがありません

group_byでエラー...ということで、"dplyr"のエラーメッセージを無視しているとグラフが描けないということがわかりました。

2. マスクされているpackageを削除

以下のオブジェクトは ‘package:stats’ からマスクされています: 

    filter, lag 

以下のオブジェクトは ‘package:base’ からマスクされています: 

    intersect, setdiff, setequal, union 

このメッセージの意味、どういうことかさっぱりわかりません。

調べてみたところ、

filterとlagというオブジェクトは、statsというパッケージで使われているオブジェクトと名前が一緒だからどっちにされちゃうよ。
intersect, setdiff, setequal, unionというオブジェクトはbaseというパッケージで使われているオブジェクトと名前が一緒だからどっちかにされちゃうよ。

ということらしいです。

statsとかbaseとか、大事そうな名前のパッケージですが...削除してダメだったらもう一度インストールすればいいや!という気概で思い切って消してみることにしました。

コードは、remove.packages()。このコードを使ってstatとbaseを消してみました。

すると...

エラーメッセージは消え、グラフが描けるように!

...でもこれでよいのかな?という不安が...何も起こらないと良いのですが...

-------【追記】2020年4月18日-------

baseとかはもともとRに入っているパッケージなので、消してもまた戻ってきます。

このエラーを出さないためにどうしたら良いか...

呼び出す順番を変えたら、エラーが出なくなりました。

> library(dplyr) #dplyrを呼び出す
> library(ggplot2) #ggplot2を呼び出す

これだけで変にパッケージを消さないで済みました。


それでは、また!






最後までお読みいただきありがとうございます。よろしければ「スキ」していただけると嬉しいです。 いただいたサポートはNGS解析をするための個人用Macを買うのに使いたいと思います。これからもRの勉強過程やワーママ研究者目線のリアルな現実を発信していきます。