Dplyr非标准评估,函数名称作为字符串传递

康拉德

在使用dplyr管道时,我想通过从向量传递函数名称来传递函数mutate使用NSE

给定两个函数名称的向量:

funs <- c("sum", "mean")

我想使用第一个值来获取总和:

require(dplyr)
mtcars %>% 
  group_by(cyl) %>% 
  mutate_(res = funs[1](hp))

这会导致错误:

Error in as.lazy_dots(list(...)) : attempt to apply non-function

do.call

do.call 基于基础的解决方案似乎会产生一些求和结果:

mtcars %>% 
  group_by(cyl) %>% 
  mutate_(res = do.call(funs[1], .))

但是尝试使用时失败mean

>> mtcars %>% 
+   group_by(cyl) %>% 
+   mutate_(res = do.call(funs[2], .))
Error in mean.default(mpg = c(21, 21, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4,  : 
  argument "x" is missing, with no default

我猜想它在这里的应用方式根本没有任何意义。因此,我的问题:如何使用dplyr这样的功能可以从一个向量的字符串传递?

阿克伦

我们可以使用getget提取单个字符串的值。在这里,它是一个函数,因此它返回函数本身。

mtcars %>% 
     group_by(cyl) %>% 
     mutate(res= get(funs[1])(hp))

用于传递其他参数

mtcars$hp[1] <- NA
mtcars %>%
      group_by(cyl) %>% 
      mutate(res= get(funs[1])(hp, na.rm = TRUE))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在使用非标准评估的自定义dplyr函数中将字符串用作参数

如何使用dplyr使用非标准评估来评估构造的字符串?

R 非标准求值:将变量的名称作为参数传递给函数并让函数为其赋值

如何获得函数名称作为字符串?

OCaml函数名称作为字符串

将函数参数名称作为字符串传递

调用仅以函数名称作为字符串的函数(ES6语法)

dplyr非标准评估,函数外部有卷曲

将非标准评估参数传递给子集函数

R:在R中获取以package :: function调用的函数名称作为字符串

将带空格的非标准评估参数转换为单个字符串

dplyr和闪亮的非标准评估

Dplyr 非标准评估——需要帮助

dplyr和非标准评估(NSE)

非标准评估设置名称R

将列名称作为字符串传递给with

将按钮名称作为字符串传递

使用 window 对象通过函数名称作为字符串调用函数是否不安全?

值名称作为赋值函数中的字符串

获取非标准模式中的子字符串

将列名作为点-点-点传递以进行 qplot() 的非标准评估

在dplyr中将汇总函数转换为非标准评估NSE

dplyr 中的非标准评估:如何间接调用函数的多个参数?

dplyr group_by通过非标准评估的多个函数参数

将函数名称作为参数传递给mapply?

将字符串作为参数名称/值对传递给R函数

在作为字符串传递的img src上将传递的导入名称作为prop进行响应

如何传递字符串作为参数名称?

dplyr group_by并使用非标准评估进行汇总