我想搜索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专业水平上有点快速和肮脏。)
提前感谢您的帮助。
答案 0 :(得分:3)
这里采用R方式:
lapply(ls(pattern='a[0-9]r[0-9]'),
function(nn) {
x <- get(nn)
sum(x[row,c(i,j,k)])
})
ls
将提供具有特定模式名称的变量列表lapply
get
会将名称转换为可变的sum
函数答案 1 :(得分:0)
自动构建指定对象的名称列表并不错。您可以使用paste
,rep
和序列0:10
等来构建此类列表。一旦有了对象名称列表(让我们称之为mylist
),{应用了{1}}函数给出了对象本身。