计算R中a big.matrix的对角线

Calculate the diagonal of a big.matrix in R

我正在处理几个 1.3e6 行的大平方矩阵,我想要所有这些矩阵的对角线。我需要一种有效的方法来做到这一点,但我不能使用 diag()

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

有什么想法吗? 非常感谢您的宝贵时间

好的,其实这里不需要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].