如何编写自定义管道友好函数?

我试图创建管友好的功能使用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


以上是如何编写自定义管道友好函数?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>