错误:找不到函数“%>%”

时间:2015-05-14 22:33:54

标签: r dplyr magrittr

我在R中运行一个示例,完成这些步骤,到目前为止一切正常,除非此代码产生错误:

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

错误:找不到功能“%&gt;%”

我不明白使用这个特殊操作符有什么好处 %>%是,并且任何反馈都会很棒。

5 个答案:

答案 0 :(得分:76)

您需要加载一个首先定义该函数的包(如magrittrdplyr),然后它才能正常工作。

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

管道运营商%>%被引入&#34;缩短开发时间并提高代码的可读性和可维护性。&#34;

但是每个人都必须自己决定它是否真的适合他的工作流程并使事情变得更容易。 有关magrittr的更多信息,请点击here

未使用管道%>%,此代码将返回与您的代码相同的内容:

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

<强> 编辑: (我正在扩展我的答案,因为@Molx做了非常有用的评论)

  

尽管来自magrittr,管道操作员更常用   使用包dplyr(需要并加载magrittr),所以   每当您看到有人使用%>%时,请确保您不应加载dplyr   代替。

答案 1 :(得分:12)

在Windows上:如果在%dopar%循环中使用%&gt;%,则必须添加对加载包dplyr(或magrittrdplyr加载)的引用

示例:

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

如果省略.packages命令,并使用%do%来使其全部在一个进程中运行,那么工作正常。原因是它全部在一个进程中运行,因此不需要专门加载新包。

答案 2 :(得分:0)

可以使用以下内容:

FirebaseFirestore.getInstance().collection(collectionPath).document(documentPath).collection(collectionPath).document(documentPath)

答案 3 :(得分:0)

好处是使用了先前功能的输出。例如,您不需要重复数据源的来源。

答案 4 :(得分:0)

需要安装magrittr如下

install.packages("magrittr")

然后,在自己的脚本中,不要忘记在顶部添加

library(magrittr)

对于运算符 %>% 的含义,您可能需要考虑 this questionWhat does %>% function mean in R?

请注意,同一个运算符也适用于库 dplyr,因为它从 magrittr 导入。

dplyr 曾经有一个类似的运算符 (%.%),现在已弃用。 Here 我们可以阅读 %.%(库 dplyr 中已弃用的运算符)和 %>%magrittr 中的运算符,也可以在 { {1}})