繁体   English   中英

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

[英]Error: could not find function "%>%"

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

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

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

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

您需要先加载一个定义函数的包(如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 上:如果您在 %dopar% 循环中使用 %>% ,则必须添加对加载包dplyr (或magrittrdplyr加载的dplyr )的引用。

例子:

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 )之间的dplyr

可以使用以下内容:

 install.packages("data.table")
 library(data.table)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM