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

标签 r magrittr

我正在尝试创建 pipe-friendly functions使用 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

关于r - 如何编写自定义管道友好函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65441055/

相关文章:

R:可以在并行模式下在data.frame中填充值吗?

r - 为什么将日志应用于带有 magrittr 管道的向量会给出意外和不正确的值?

r - 在 dplyr 链中使用 table()

r - 如何使用magrittr%>%管道从列表中提取元素/子集?

r - magrittr 和日期对象

r - 在向右滚动时修复 Shiny DataTable 中的列不起作用

r - 描述函数在 R 中不起作用

r - 使用 %>% 管道和点 (.) 表示法

r - 更改 Rmarkdown 文档中的页面大小

r - 如何计算数据集中每个主题的变量