【问题标题】:Iterate process in R using range of vectors derived from matrix使用从矩阵派生的向量范围在 R 中迭代过程
【发布时间】:2013-12-27 07:53:13
【问题描述】:

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

我有两组数据矩阵。 “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 中一行的所有值,例如 [1]。该模块返回一个单独的值列表。我需要对矩阵 B 中的所有行独立运行分析,保存所有返回的列表,然后我需要合并这些列表。

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

再次抱歉,我的措辞如此糟糕。我希望我对术语有足够的了解,以便更清楚地说明我的问题。

【问题讨论】:

    标签: r loops vector matrix iteration


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多