错误: 无法找到函数“% >%”

我在 R 中运行一个示例,通过这些步骤,除了这段代码产生一个错误之外,目前一切正常:

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

错误: 无法找到函数“% >%”

我不明白使用这个特殊的操作符有什么好处 %>%是,任何反馈将是伟大的。

491603 次浏览

您需要加载一个首先定义函数的包(如 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 %>%

将管道操作员 %>%引入到 “减少开发时间,提高代码的可读性和可维护性。”

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

如果不使用管道 %>%,这段代码将返回与您的代码相同的结果:

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

编辑: (由于@Molx 的一个非常有用的评论,我扩展了我的回答)

尽管来自 magrittr,管道操作员更常用 包 dplyr(它需要并加载 magrittr) ,因此 当您看到有人使用 %>%时,请确保不要加载 dplyr 取而代之。

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

例如:

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

如果省略 .packages命令,而使用 %do%使其全部在一个进程中运行,则可以正常工作。原因是它们都在一个进程中运行,所以不需要特别加载新的包。

需要按以下方式安装 magrittr

install.packages("magrittr")

然后,在一个人的脚本,不要忘记在上面添加

library(magrittr)

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

注意,相同的操作符也可以使用库 dplyr,因为它是从 magrittr导入的。

dplyr过去有一个类似的操作符(%.%) ,现在已经废弃了。我们可以阅读 %.%(来自库 dplyr的弃用操作符)和 %>%(来自 magrittr的操作符,也可以在 dplyr中获得)之间的差异

管道操作符在基 R 中不可用。使用它需要加载以下软件包之一: dplyrtidyversemagrittr

任何其他人偶然发现这个计算矩阵的能力,请安装这个库(dplyr 本身不正确)

library(expm)