2011-09-05 55 views
12

可能重复:
Pass a data.frame column name to a function功能的R,传递一个数据帧和列名

我想创建R中的功能中输入之间存在数据帧和列名称。该代码将是这样的:

DT_CAP_COLUMN <- function(input_table,output_table,column_name, 
          cap_function,Parameter){ 
    input_table$column_name 
    (...) 
    return(1) 
} 

输出:

DT_CAP_COLUMN(churn_3,churn_4,'VOICE_REVENUE','STD',3) 
input_table$column_name is NA 

我认为这个问题是input_table$column_name无法识别。 input_tablechurn_3,但是input_table$column_name返回column_name not found

有没有办法做到这一点,而无需使用传递引用包或传递环境作为变量?

+0

@Kevin好的地方。投票结束。 – Andrie

+0

只因为我有同样的问题... – kmm

+5

没有必要downvote欺骗,尤其是不适合新用户。 –

回答

15

您可以在data.frame通过使用方括号索引间接引用列:

样本数据:

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

功能:

my.function <- function(data, col){ 
    data[, col] 
} 

结果:

> my.function(dat, "b") 
    b 
1 D 
2 E 
3 F 
> my.function(dat, "c") 
    c 
1 7 
2 8 
3 9 
+0

非常感谢。使用列号和列名完全按照我的想法工作。 – jpsfer

相关问题