【发布时间】:2018-05-20 14:36:27
【问题描述】:
我有 20 多个由一系列值组成的数字向量。每个向量都由一个字母来区分,例如val_a、val_b、val_c 等...
我想将这些向量中的每一个的均值放入一个命名向量中。我当然可以像这样费力地做到这一点:
obs <- c("val_a" = round(mean(val_a),3),
"val_b" = round(mean(val_b),3),
"val_c" = round(mean(val_c),3))
但是对于 20 个向量,写出来就变得乏味,更不用说一个不雅的解决方案了。如何以更简洁的方式创建命名向量?我尝试使用 for 循环,如下所示:
obs <- c(for (j in 1:20) {
assign(paste("val",letters[j], sep = "_"),
mean(as.name(paste('val',letters[j], sep = '_'))),)
})
在传递给assign的右侧参数中,“as.name”用于从“paste”的输出中删除引号。因此,传递给 assign 的第二个参数返回一个字符,该字符与我想要获得平均值的数字向量具有完全相同的名称,例如val_a。但我收到错误消息:
警告信息: 1:在 mean.default(as.name(paste("val", letters[j], sep = "_"))) 中: 参数不是数字或逻辑:返回 NA
有谁知道如何做到这一点?
【问题讨论】:
-
试试
get函数:get('val_a')