我正在使用 magrittr
的管道 %>%,后跟一个由 package::function 调用的函数,并收到错误:Error in .::base :used参数(平均值)
有什么问题吗?
library(magrittr)
c(1,2) %>%
base::mean
#> Error in .::base: unused argument (mean)
最佳答案
发生的情况是,magrittr 很困惑到底要将前一个值插入到哪个函数中。当你这样做时
c(1,2) %>%
mean
magrittr
可以很容易看出mean
是一个指向mean函数的符号。但是,当您执行 base::mean
时,事情会变得有点棘手,因为 ::
也是 R 中的函数。让我们比较一下 base::mean 之间的差异
和 base::mean()
在 R 中如何转换为函数调用。
as.list(quote(base::mean))
# [[1]]
# `::`
# [[2]]
# base
# [[3]]
# mean
as.list(quote(base::mean()))
# [[1]]
# base::mean
您可以看到这些解析方式有所不同。当您只需输入 base::mean
时,R 将首先看到 ::
函数,并尝试在其中传递数字。基本上是试图打电话
`::`(., base, mean)
这没有意义,这就是给你特定错误消息的原因
但是如果您显式添加 ()
,R 可以看到您正在尝试调用从 base::mean
返回的函数,因此它将把参数添加到正确的地方。所以你可以这样做
c(1,2) %>%
base::mean()
或
c(1,2) %>%
(base::mean)
关于R:使用管道 %>% 和 pkg::fo 会导致错误 "Error in .::base : unused argument",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54992188/