使用从矩阵导出的矢量范围迭代R中的过程

时间:2013-12-10 00:18:06

标签: r loops vector matrix iteration

我必须先道歉,因为我没有编程背景,所以请原谅我,如果这个问题过于简单化或反复解决了。如果从我的解释中不清楚,我会非常愿意帮助澄清我的问题。

我有两组数据矩阵。 “A”:

    [Ac1] [Ac2] ... [Ac500]
[Ac1]  25   30 ...   15
[Ar2]  7    54 ...   41
... 
[cr25000]

“B”,其列数相似,但不是行数

    [Bc1] [Bc2] ... [Bc500]
[Br1]  25  30 ...    15
[Br2]  7   54 ...    41
... 
[Br20000]

我在R中运行一个模块(“npSeq”),它一致地使用矩阵A作为输入值,水平向量包括矩阵B中行的所有值,ex [1]。该模块返回单独的值列表。我需要为矩阵B中的所有行独立运行分析,保存所有返回的列表,然后我需要将它们组合起来。

但是我想知道是否有一种方法可以自动化该过程,以便模块使用从行[Br1]派生的向量运行,保存返回的列表,然后使用从行派生的向量再次运行该过程[的Br 2]。重复该过程直到[Br20000]。

再次,我很抱歉这个措辞太差了。我希望我能够理解足够的术语来更清楚地陈述我的问题。

1 个答案:

答案 0 :(得分:1)

您可以使用lapply循环遍历B的行索引:

result.list <- lapply(1:nrow(B), function(i) npSeq(A, B[i, ]))

请注意,这比使用for循环要快得多(任何?)。它只是一个简短而干净的等价物。 20,000次迭代确实听起来很多,所以可能需要一段时间,具体取决于函数的速度有多慢。