【发布时间】:2017-06-20 16:15:34
【问题描述】:
我有一个从 0 到 n 的值序列的向量,称为 seq。我还有两列输出,每列输出长度为 1000,来自先前运行的数学模型,col1 和 col2。
col1 col2 0 1 2 3 4 ... n
101 4 _ _ _ _ _ ... _
250 12 _ _ _ _ _ ... _
1007 8 _ _ _ _ _ ... _
我的矩阵 M 的第一列为 col1,第二列为 col2。我创建了 M,这样我就有了 n+1 个空白列,每个 seq 的元素都有一个。
M 的其余元素将使用一个非常简单的公式填充:
M[i,j+2] = (M[i,1]+seq[j])/M[i,2]
即对于 seq 的元素 j,取第 1 列的第 i 个元素并将其添加到 seq[j] 然后除以第 2 列的第 i 个元素。
这很简单,很容易在 i 和 j 上执行 2 个 for 循环。但它会运行 1000 行和 seq 的所有 n+1 个元素,所以我担心这会在冗长的 seq 中大大减慢我的速度。请问有没有更快的方法来计算 M 的所有元素?
【问题讨论】:
-
你不必做两个 for 循环。一个就足够了,就像 R 做向量运算一样。
for(j in 1:n) M[,j+2] <- (M[,1]+seq[j])/M[,2]。你也可以使用apply函数。