使用R的粘贴操作连接的名称字符串中的矩阵列

时间:2016-12-30 15:45:25

标签: r matrix

我有许多矩阵(foo1,foo2,...),有10列数值数据。我需要在它们的for循环中提取和操作它们中的特定列 我尝试的失败了相当怜悯......

> for (i in 1:10) {
    for (k in 1:4) {
      aver_foo <- mean(paste("foo",k,"[,i]",sep=""))
      do something
    }
  }

Warning message:
In mean.default(paste("foo", k, "[,i]", sep = "")) :
  argument is not numeric or logical: returning NA

我们的想法是创建一个名称字符串,以根据循环索引提取相关矩阵的第i列值。我确实检查了SO和Google的文档,但谷歌没有很好地处理关键字“R”,我显然不理解基本的东西。
任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

我们可以使用lapplycolMeans

执行此操作
lapply(mget(ls(pattern="foo\\d+")), function(x) colMeans(x[,1:4]))

答案 1 :(得分:1)

你不能取字符串的意思。您需要使用get来查找具有该名称的对象。要按照原始代码的精神回答:

for (i in 1:10) {
    for (k in 1:4) {
      aver_foo <- mean(get(paste("foo",k, sep=""))[,i])
      do something
    }
}

但是@akrun是对的,使用某种形式的应用可能更好,而不是循环。