【发布时间】:2016-05-04 14:09:19
【问题描述】:
我有向量:
v1 = c(1,2,3)
我想从这个向量创建矩阵,其中i,j 位置上的元素将是sum i,j 位置上的向量成员:
[,1] [,2] [,3]
[1,] 2 3 4
[2,] 3 4 5
[3,] 4 5 6
问题:
-
i,j和j,i是相同的,所以没有理由计算 2x 以获得更好的性能。如何做到这一点? - 如果
i == j并简单地返回NA,如何创建也不会计算元素的变体?我不是要diag(m) <- NA命令,我要问的是如何防止计算这些元素。
PS:这是我的问题的简化版
【问题讨论】:
-
outer(v1, v1, "+")?如果这还不够快,那么 Rcpp 是您最好的选择。 -
我认为Rcpp这本书有上三角计算作为案例研究,但我的记忆可能有误。