计算R中big.matrix的对角线

时间:2018-09-21 15:59:39

标签: r bigdata diagonal r-bigmemory

我正在处理1.3e6行的几个大平方矩阵,我想对所有矩阵进行对角线处理。我需要一种有效的方法来执行此操作,但是我不能使用diag()

library(bigmemory)
A=big.matrix(nrow=1.3e6,ncol=1.3e6,init=3)
diag(A)

有什么主意吗? 非常感谢您的宝贵时间

1 个答案:

答案 0 :(得分:1)

好吧,实际上,您在这里不需要Rcpp。 只需使用特殊的两列矩阵访问器即可:

library(bigmemory)

X <- big.matrix(10, 10); X[] <- 1:100

d <- min(dim(X))
X[cbind(1:d, 1:d)]

X[cbind(1:d, 1:d)]将访问X[1, 1]X[2, 2],...,X[d, d]