如何编写自定义管道友好函数?
我试图创建管友好的功能使用magrittr
例如,我尝试编写一个自定义函数来计算列的平均值:
library(magrittr)
custom_function <-
function(.data, x) {
mean(.data$x)
}
mtcars %>%
custom_function(mpg)
但我收到此错误:
Error in (function(x, i, exact) if (is.matrix(i)) as.matrix(x)[[i]] else .subset2(x, :
object 'mpg' not found
也许我对变量的引用不起作用。我该如何解决这个问题.data$x
?
回答
.data$x
不是指名称保存在变量x
中的列,而是指名为 的列"x"
。用.data[[x]]
指他的名字是变量保持的字符串列x
,并使用字符串调用你的函数"mpg"
。
library(magrittr)
custom_function <- function(.data, x) mean(.data[[x]])
mtcars %>% custom_function("mpg")
## [1] 20.09062