【问题标题】:Use DataFrame Column Name as R Function Argument [duplicate]使用 DataFrame 列名作为 R 函数参数 [重复]
【发布时间】:2017-12-28 21:37:08
【问题描述】:
fun <- function(dataframe, var){
    print(data$var)
}

dataset <- data.frame(a = 1:6, b = 12:17, c = 3:8)

fun(dataset, a)

基本上,我想做这样的事情,我可以将其中一个列名传递给一个函数,并能够在以后使用它来调用该列。

我知道 group_by 函数以某种方式处理它,但是当我进入调试模式并试图弄清楚它时,我无法确定实际在做什么我想要的东西。

【问题讨论】:

  • 传入带引号的字符串 "a" 并在函数中使用括号:data[[var]]
  • fun
  • 这里还有一个问题:函数参数被命名为dataframe,但在正文中引用了data

标签: r function dataframe arguments


【解决方案1】:

要做到这一点dplyr-like,你需要使用 tidyevaluation。首先需要enquo()var,然后引用var!!

library(dplyr)

fun <- function(dataframe, var){
  var <- enquo(var)
  select(dataframe, !!var)
}

dataset <- data.frame(a = 1:6, b = 12:17, c = 3:8)

fun(dataset, a)

你可以找到一个好的tidyevaltutohere

最好的,

科林

【讨论】: