r中具有变量名的for循环
我试图对一组变量重复一个复杂的语法。基本上, 使用如下数据集:r中具有变量名的for循环,r,for-loop,R,For Loop,我试图对一组变量重复一个复杂的语法。基本上, 使用如下数据集: df <- data.frame( X=1:10, Y=6:15, Z=11:20) 使用类似以下的循环: for (n in c("X", "Y", "Z")) {mean(df$n)} 然而,这种类似于Stata的编程在R中不起作用。它似乎是循环写入df$“X”而不是df$X。有简单的解决办法吗 更新:我没有计算平均值,而是有一个更复杂的函数,在这里我需要反复访问变量名。因此,我的问题不是关于计算方法,而是使用循环函数
df <- data.frame( X=1:10, Y=6:15, Z=11:20)
使用类似以下的循环:
for (n in c("X", "Y", "Z")) {mean(df$n)}
然而,这种类似于Stata的编程在R中不起作用。它似乎是循环写入df$“X”
而不是df$X
。有简单的解决办法吗
更新:我没有计算平均值,而是有一个更复杂的函数,在这里我需要反复访问变量名。因此,我的问题不是关于计算方法,而是使用循环函数 您可以在处使用摘要和bind\u cols 在下面的代码中,我将
mean
应用于X,Y
列和max
列Y,Z
。同样,您也可以对多组不同的列应用自己的函数
库(dplyr)
df%>%
总结(变量(X,Y),funs(平均值=平均值))%>%
绑定列(df%>%
总结(变量(Y,Z),funs(Max=Max)))
给
X_Mean Y_Mean Y_Max Z_Max
1 5.5 10.5 15 20
样本数据:
df <- structure(list(X = 1:10, Y = 6:15, Z = 11:20), .Names = c("X",
"Y", "Z"), row.names = c(NA, -10L), class = "data.frame")
df这就是工作
for(n in c("X", "Y", "Z")) {mean(df[, n])}
要查看输出,请在print()
中换行mean
:
我仍然支持@Prem的解决方案,但是我不知道你到底在做什么…那么sapply(df,mean)
呢?谢谢,dplyr是计算统计的一个很好的提示。然而,我的问题是for循环(见更新)。谢谢!!!这种访问数据列的替代方法解决了我的问题。
for(n in c("X", "Y", "Z")) {mean(df[, n])}
# [1] 5.5
# [1] 10.5
# [1] 15.5