按R中的名称循环数据框列

时间:2016-03-18 22:36:10

标签: r dataframe

我有一个数据框,每列都是一个分类变量,还有一个名为target的列,其值为0或1。 我试图按列循环数据框,并按每列的不同级别计算平均目标。

n = c(2, 2, 1) 
s = c(1, 0, 1) 
b = c(TRUE, FALSE, TRUE) 
target = c(1,0,0)
df = data.frame(n, s,b,target)

for(i in 1:a){
   aggregate(df$target ~ as.name(colnames(df)[1]), df,  mean)
}

在这里,我似乎无法在

中替换n
aggregate(df$target ~ n, df, mean) 

带字符串。如何解决这类问题?非常感谢。

1 个答案:

答案 0 :(得分:0)

非常感谢RomanLuštrik的评论。

代码是,

for(i in 1:a){
col_formula <- as.formula(sprintf("target ~ %s", colnames(df)[i]))
aggregate(col_formula, data=df,  FUN=mean)
}

它给出了我正在寻找的结果。