web-dev-qa-db-ja.com

エラー:関数 "%>%"が見つかりませんでした

私はRで例を実行していますが、このコードを除いてエラーが発生することを除いて、すべてのステップを経てすべてが機能しています:

 words <- dtm %>%
 as.matrix %>%
 colnames %>%
 (function(x) x[nchar(x) < 20])

エラー:関数 "%>%"が見つかりませんでした

この特殊な演算子%>%を使用する利点が何であるかはわかりません。フィードバックはすばらしいでしょう。

52
Haidar

最初に関数を定義するパッケージ(magrittrまたはdplyrなど)をロードする必要があります。その後、機能するはずです。

install.packages("magrittr") # package installations are only needed the first time you use it
install.packages("dplyr")    # alternative installation of the %>%
library(magrittr) # needs to be run every time you start R and want to use %>%
library(dplyr)    # alternatively, this also loads %>%

パイプ演算子%>% "開発時間を短縮し、コードの可読性と保守性を改善するために導入されました。"

しかし、それが本当に彼のワークフローに適合し、物事を容易にするかどうかは誰もが自分で決める必要があります。 magrittrの詳細については、 here をクリックしてください。

パイプ%>%を使用しない場合、このコードはコードと同じ結果を返します:

words <- colnames(as.matrix(dtm))
words <- words[nchar(words) < 20]
words

EDIT:(非常に便利なため、答えを拡張しています@Molxによって作成されたコメント)

magrittrからのものであるにもかかわらず、パイプ演算子はパッケージdplyrmagrittrを必要とし、ロードする)でより一般的に使用されるので、%>%代わりにdplyrをロードすべきではありません。

85
maRtin

Windows:%dopar%ループ内で%>%を使用する場合、ロードパッケージdplyr(またはmagrittr、ロードするdplyr)への参照を追加する必要があります。

例:

plots <- foreach(myInput=iterators::iter(plotCount), .packages=c("RODBC", "dplyr")) %dopar%
{
    return(getPlot(myInput))
}

.packagesコマンドを省略し、代わりに%do%を使用して、すべてを単一のプロセスで実行する場合、正常に動作します。その理由は、すべてが1つのプロセスで実行されるため、新しいパッケージを特別にロードする必要がないためです。

12
Contango