【问题标题】:Using a list of matrix names使用矩阵名称列表
【发布时间】:2014-08-08 01:45:31
【问题描述】:

我有 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 中可能有比 R 更好的方法for 循环,但我希望以我目前的 R 专业知识水平快速而肮脏。)

提前感谢您的帮助。

【问题讨论】:

  • 为什么不把矩阵本身放在一个列表中?

标签: r


【解决方案1】:

这里是 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. get 会将名称转换为变量
  4. 通过矢量化sum 函数使用多索引

【讨论】:

    【解决方案2】:

    自动构建指定对象的名称列表是不错的做法。您可以使用pasterep0:10 等序列构建此类列表。一旦您拥有对象名称列表(我们称之为mylist),应用在其上的get 函数给出对象本身。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-31
      • 1970-01-01
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多