我正在R中运行一个示例,按照步骤进行,到目前为止一切都正常,除了这段代码会产生一个错误:
words <- dtm %>%
as.matrix %>%
colnames %>%
(function(x) x[nchar(x) < 20])
错误:无法找到函数“%>%”
我不明白使用这个特殊运算符%>%
的好处是什么,希望能得到反馈。
我正在R中运行一个示例,按照步骤进行,到目前为止一切都正常,除了这段代码会产生一个错误:
words <- dtm %>%
as.matrix %>%
colnames %>%
(function(x) x[nchar(x) < 20])
错误:无法找到函数“%>%”
我不明白使用这个特殊运算符%>%
的好处是什么,希望能得到反馈。
magrittr
或dplyr
),它会定义该函数,然后它应该可以正常工作。
你需要加载一个包(例如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
的更多信息,请单击此处。
%>%
管道运算符没有使用,这段代码将返回与您的代码相同的结果:words <- colnames(as.matrix(dtm))
words <- words[nchar(words) < 20]
words
编辑: (由于 @Molx 发表了非常有用的评论,我将扩展我的回答)
尽管来自于
magrittr
包,但管道操作符更常与需要并加载magrittr
的包dplyr
一起使用, 因此每当您看到有人使用%>%
时,请确保您是否应该加载dplyr
。
magrittr
中有管道运算符,但它更常用于需要加载magrittr
的dplyr
包中。因此,每当你看到有人使用%>%
时,确保你是否应该加载dplyr
。 - Molxlibrary(tidyverse)
) 可能不足够。我在 library(tidyverse)
后添加了 (library(dplyr)
),然后发现了 %>%
。 - RikH在Windows系统中:如果你在 %dopar%
循环内使用了 %>%
,你需要添加一个引用来加载 dplyr
包(或者 dplyr
自带的包 magrittr
)。
示例:
plots <- foreach(myInput=iterators::iter(plotCount), .packages=c("RODBC", "dplyr")) %dopar%
{
return(getPlot(myInput))
}
如果您省略`.packages`命令,并使用`%do%`代替以使其在一个单独的进程中运行,则可以正常工作。原因是所有操作都在一个进程中运行,因此不需要专门加载新包。在基础R中没有pipe操作符。您需要加载以下任何一个包才能使用它:dplyr
、tidyverse
或magrittr
你需要按照以下方式安装magrittr
install.packages("magrittr")
然后,在你的脚本中,不要忘记在顶部添加
library(magrittr)
关于运算符%>%
的含义,您可能想考虑一下这个问题:R中%>%函数的含义是什么?
请注意,相同的运算符也适用于库dplyr
,因为它从magrittr
导入。
dplyr
曾经有一个类似的运算符(%.%
),现在已被弃用。在这里,我们可以阅读有关%.%
(来自库dplyr
的弃用运算符)和%>%
(来自magrittr
的运算符,也可在dplyr
中使用)之间差异的说明。
如果有人碰巧看到这个想要计算矩阵幂的问题,请安装这个库(仅使用 dplyr 不正确)
library(expm)