在if语句中使用变量名称的向量

时间:2014-04-24 15:53:53

标签: r variables dataframe

我使用R相当新,但我在尝试做的事情中遇到了很多这个问题。我想将函数应用于data.frame中的特定列,具体取决于传递给包含函数的值。它看起来像这样:

myfunction <- function(var) {
        < do something to mydata$var >
}

var可以是mydata(data.frame)中任何列的名称。

问题在于代码的dataframe$var部分。我无法弄清楚如何动态调用这样的变量名。 dataframe[,var]似乎不起作用,dataframe[,get(var)]dataframe[,eval(var)]也不起作用。

我也想使用同样的理论来遍历mydata中特定列的向量:

varlist <- c("var1","var2","var3")
for (var in varlist) {
    < do something to mydata$var >
}

但同样,mydata$var就是问题所在。

任何建议或帮助都将不胜感激!

1 个答案:

答案 0 :(得分:0)

试试这个:

test_frame = data.frame("a"=1:4,"b"=2:5,"c"=3:6)

varlist = c("a","c")

myfunction = function(var_name){
  return(mean(test_frame[,var_name]))
}

for (var in varlist){
  myfunction(var)
}

或以更清洁的方式......

sapply(varlist,myfunction)
  a   c 
2.5 4.5