2014-04-24 43 views
0

我对使用R相当陌生,但我在尝试做的事情中遇到过很多问题。我想根据传递给包含函数的值将函数应用于data.frame中的特定列。这将是这个样子:在if语句中使用变量名称的向量

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的问题。

任何意见或帮助,将不胜感激!

+0

或者试图获得(据帧[,VAR]) – FFI

回答

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