114

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

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

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

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

4

3 回答 3

171

您需要先加载一个定义函数的包(如magrittror 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,请单击此处

不使用 pipe %>%,此代码将返回与您的代码相同的代码:

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

编辑:( 由于@Molx 发表了非常有用的评论,我正在扩展我的答案)

尽管来自magrittr,管道运算符更常用于包dplyr(需要和加载magrittr),所以每当你看到有人使用时,请%>%确保你不应该加载dplyr

于 2015-05-14T22:38:43.417 回答
17

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

例子:

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

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

于 2017-06-04T09:15:47.147 回答
3

需要安装magrittr如下

install.packages("magrittr")

然后,在一个脚本中,不要忘记在顶部添加

library(magrittr)

对于运算符的含义,%>%您可能需要考虑这个问题R 中的 %>% 函数是什么意思?

请注意,相同的运算符也可以与库一起使用dplyr,因为它从magrittr.

dplyr曾经有一个类似的运算符 ( %.%),现在已弃用。在这里,我们可以了解%.%(deprecated operator from the library dplyr) 和%>%(operator from magrittr,也可以在dplyr)

于 2021-02-01T20:37:05.067 回答