У меня есть очень большая двоичная матрица, хранящаяся как big.matrix для экономии памяти (в противном случае она составляет более 2 ГБ - 5 миллионов столбцов и 100 строк).
r <- 100
c <- 10000
m4 <- matrix(sample(0:1,r*c, replace=TRUE),r,c)
m4 <- cbind(m4, 1)
m4 <- as.big.matrix(m4)
Мне нужно удалить каждый столбец, который имеет только одно уникальное значение (в данном случае только 0 или только 1). Из-за количества столбцов я хочу иметь возможность делать это параллельно.
Как я могу это сделать, сохраняя при этом данные сжатыми как big.matrix? Я могу преобразовать его в df и перебирать столбцы в поисках количества уникальных значений, но это занимает слишком много оперативной памяти.
Спасибо!
m5 <- m4[, !(colSums(m4) %in% c(0, nrow(m4)))]
- person   schedule 21.04.2018matrix
, а неbig.matrix
, как указано в задаче. Кроме того, выходные данные также относятся к классуmatrix
, занимая слишком много памяти. - person Keshav M   schedule 21.04.2018as.big.matrix
или применить операцию подмножества к подмножествам большой матрицы, используя `sub.big.matrix? Я думаю, вы, возможно, уже рассматривали эти варианты? - person   schedule 21.04.2018big.matrix
в Rcpp. Затем используйтеdeepcopy
. - person F. Privé   schedule 22.04.2018