【问题标题】:Loop over variable names, create new variable and assign values循环变量名,创建新变量并赋值
【发布时间】:2015-09-02 18:44:26
【问题描述】:

我正在尝试确定多个向量的平均值。有没有比在循环中使用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)))  
}

【问题讨论】:

  • 试试list2env('names<-'(lapply(list(a,b,c), mean), paste0(c('a', 'b', 'c'),'mean')),.GlobalEnv) 虽然你应该学会使用列表来避免这种语法

标签: r loops assign


【解决方案1】:

我不会为您想要取平均值的每个向量创建一个新变量,而是计算并存储每个向量的平均值以及以下内容:

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

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

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

请注意,这可能会简化您在计算均值后使用的代码。如果你有 var &lt;- "a" 表示你想要处理的变量,你现在可以用 means[var] 得到它的平均值,而不需要使用像 get(paste0(var, "mean")) 这样的笨重的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 2011-07-12
    相关资源
    最近更新 更多