Ho una matrice di fattori in R e voglio convertirla in una matrice di variabili dummy 0-1 per tutti i possibili livelli di ciascun fattore.R: conversione matrice sparsa
Tuttavia questa matrice "fittizia" è molto grande (91690x16593) e molto sparsa. Ho bisogno di memorizzarlo in una matrice sparsa, altrimenti non si adatta ai miei 12GB di RAM.
Attualmente, sto usando il seguente codice e funziona molto bene e richiede pochi secondi:
library(Matrix)
X_factors <- data.frame(lapply(my_matrix, as.factor))
#encode factor data in a sparse matrix
X <- sparse.model.matrix(~.-1, data = X_factors)
Tuttavia, voglio usare il pacchetto E1071 in R, e, infine, salvare questa matrice per libsvm formato con write.matrix.csr()
, quindi prima devo convertire la mia matrice sparsa nel formato SparseM.
ho cercato di fare:
library(SparseM)
X2 <- as.matrix.csr(X)
ma riempie molto rapidamente la mia RAM e, infine, R si blocca. Sospetto che internamente, as.matrix.csr
converta prima la matrice sparsa in una matrice densa che non si adatta alla memoria del mio computer.
Un'altra mia alternativa sarebbe quella di creare la mia matrice sparsa direttamente nel formato SparseM.
Ho provato as.matrix.csr(X_factors)
ma non accetta un data-frame di fattori.
Esiste un valore equivalente a sparse.model.matrix(~.-1, data = X_factors)
nel pacchetto SparseM? Ho cercato nella documentazione ma non l'ho trovato.
Ha funzionato perfettamente. Grazie per la veloce risposta. –