Error: could not find function "%>%"

Error: could not find function "%>%"

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

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

Error: could not find function "%>%"

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

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

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 %>%

管道运算符 %>% 被引入 "decrease development time and to improve readability and maintainability of code."

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

不使用管道 %>%,此代码 return 与您的代码相同:

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

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

Despite being from magrittr, the pipe operator is more commonly used with the package dplyr (which requires and loads magrittr), so whenever you see someone using %>% make sure you shouldn't load dplyr instead.

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

示例:

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

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

需要安装magrittr如下

install.packages("magrittr")

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

library(magrittr)

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

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

导入

dplyr 曾经有一个类似的运算符 (%.%),现在已弃用。 Here 我们可以了解 %.%(库 dplyr 中已弃用的运算符)和 %>%magrittr 中的运算符之间的区别,这在 dplyr)

管道运算符在基础 R 中不可用。您需要加载以下包之一才能使用它:dplyrtidyversemagrittr

任何其他人在计算矩阵的幂时遇到这个问题,请安装这个库(单独的 dplyr 不正确)

library(expm)