Рассчитайте диагональ большой матрицы в R - PullRequest
0 голосов
/ 21 сентября 2018

Я работаю с несколькими матрицами большого квадрата по 1.3e6 строк, и я хочу по диагонали их всех.Мне нужен эффективный способ сделать это, но я не могу использовать diag ()

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

Есть идеи?Большое спасибо за ваше время

1 Ответ

0 голосов
/ 22 сентября 2018

Хорошо, на самом деле вам здесь не нужен 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].

...