循环变量名称,创建新变量并分配值

时间:2015-09-02 18:44:27

标签: r loops assign

我试图确定多个向量的平均值。有没有比在循环中使用assign更有效的替代方案来计算均值,如下所示?

a=c(1,2,3,4)
b=c(1,3,4,3,4)
c=c(3,9,4,2,7,3,7)
for (i in c("a","b","c")) {
  assign(paste(i,"mean", sep = ""), mean(get(i)))  
}

1 个答案:

答案 0 :(得分:3)

不是为你想要取平均值的每个向量创建一个新变量,而是计算并存储每个向量的平均值以及类似的东西:

means <- sapply(mget(c("a", "b", "c")), mean)

返回平均值的命名向量;可以通过名称访问每个变量的平均值:

means["a"]
#   a 
# 2.5 
means["b"]
# b 
# 3 
means["c"]
# c 
# 5

请注意,这可能会简化计算均值后使用的代码。如果您有var <- "a"表示您要处理的变量,现在可以使用means[var]获取其平均值,而无需使用像get(paste0(var, "mean"))这样笨重的内容。