R中的函数,传递数据框和列名

jps*_*fer 12 r function pass-by-reference

可能重复:
将data.frame列名称传递给函数

我正在尝试在R中创建一个函数,其中输入之间有数据框和列名.代码将是这样的:

DT_CAP_COLUMN  <- function(input_table,output_table,column_name,
                           cap_function,Parameter){
  input_table$column_name
  (...)
  return(1)
}
Run Code Online (Sandbox Code Playgroud)

输出:

DT_CAP_COLUMN(churn_3,churn_4,'VOICE_REVENUE','STD',3)
input_table$column_name is NA
Run Code Online (Sandbox Code Playgroud)

我认为问题是input_table$column_name不被承认.input_tablechurn_3,但input_table$column_name回报率column_name not found.

无论如何要做到这一点,而不必使用pass-by-references包或将环境作为变量传递?

And*_*rie 17

您可以使用方括号索引间接引用data.frame中的列:

样本数据:

 dat <- data.frame(
     a = letters[1:3],
     b = LETTERS[4:6],
     c = 7:9
 )
Run Code Online (Sandbox Code Playgroud)

功能:

 my.function <- function(data, col){
   data[, col]
 }
Run Code Online (Sandbox Code Playgroud)

结果:

>  my.function(dat, "b" )
  b
1 D
2 E
3 F
>  my.function(dat, "c" )
  c
1 7
2 8
3 9
Run Code Online (Sandbox Code Playgroud)