使用矩阵名称列表

时间:2014-08-08 01:45:32

标签: r

我想搜索75个矩阵。矩阵命名为a1r1,a1r2,a1r3,a1r4,a1r5,a2r1,... a15r5,我有一个列表,其中包含所有75个名称;每个矩阵具有相同的行数和列数。在一些嵌套的for循环中,我还有一行代码,第一个矩阵看起来像这样:

total <- (a1r1[row,i]) + (a1r1[row,j]) + (a1r1[row,k])

(i,j,k和row都是我循环的变量。)我想自动化这一行,以便for循环可以使用列表中的第一个矩阵完全执行,然后使用第二矩阵等。我怎么能这样做?

(我是一名经验丰富的程序员,但对R来说是新手,所以我很乐意被告知我不应该使用矩阵名称列表等等。我也意识到R中可能有更好的方法。 for循环,但我希望在我目前的R专业水平上有点快速和肮脏。)

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

这里采用R方式:

lapply(ls(pattern='a[0-9]r[0-9]'),
       function(nn) {
         x <- get(nn)
         sum(x[row,c(i,j,k)])
       })
  1. ls将提供具有特定模式名称的变量列表
  2. 使用lapply
  3. 循环显示结果列表
  4. get会将名称转换为可变的
  5. 使用带有矢量化sum函数
  6. 的多索引

答案 1 :(得分:0)

自动构建指定对象的名称列表并不错。您可以使用pasterep和序列0:10等来构建此类列表。一旦有了对象名称列表(让我们称之为mylist),{应用了{1}}函数给出了对象本身。