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

我正在尝试创建 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

https://stackoverflow.com/questions/65441055/

相关文章:

java - 在 java.time 中,为什么 WeekFields.SUNDAY_START 会

python - numpy/pandas 向量化自定义 for 循环

arrays - 从 C 中的数组中删除给定数字的所有出现

r - 根据条件为每个 ID 创建不同数量的行

r - 添加一列显示前两列是否包含 0

aws-cloudformation - AWS Proton 与 CloudFormation

java - 问题启动 Cassandra。 Java 运行时环境 : 检测到 fatal erro

scala - 验证集合中的元素,为第一个无效元素返回 Failure

c++ - std::vector 初始化的模板参数

reactjs - 用于本地状态管理的 Apollo Client 3.0 或 Redux?