2017-08-22 1 views
-1

J'ai une grande matrice de document-terme.R: Combiner des colonnes dans une matrice ayant le même nom de colonne

Je souhaite combiner des colonnes portant le même nom de colonne.

J'ai trouvé quelqu'un a posé le même problème et avait une solution de travail. Combine columns in matrix having same column name

J'ai essayé d'utiliser la réponse à faire.

Mais R me renvoie un message d'erreur.

Error: cannot allocate vector of size 49.3 Gb

#my large matrix 
tf_mat <- as.matrix(dtm_title) %>% 
      cbind(as.matrix(dtm_abstract)) %>% 
      cbind(as.matrix(dtm_claim)) 

#Combine columns with same column name. 
nms <- colnames(tf_mat) 
tf_mat %*% sapply(unique(nms),"==", nms) 

Error: cannot allocate vector of size 49.3 Gb 

Est-il possible de le résoudre? Ou y a-t-il une autre solution?

+0

En montrant quelques exemples de données, vous obtiendrez plus d'aide. –

+4

Il y a beaucoup de messages sur la résolution de l'erreur que vous rencontrez. Par exemple, [1] (https://stackoverflow.com/questions/5171593/r-memory-management-cannot-allocate-vector-of-size-n-mb), [2] (https: // stackoverflow. com/questions/10917532/r-mémoire-allocation-erreur-ne peut pas-allouer-vecteur-de-taille-75-1-mb) ou [3] (https://stackoverflow.com/questions/44169978/error-cannot -allocation-vecteur-de-taille-1000-0-mb-r). –

Répondre

0

Merci pour votre opinion.

J'ai essayé d'utiliser un autre moyen de Combine columns in matrix having same column name.

Je pense que c'est plus approprié pour mon cas, et ne prend pas beaucoup de temps à exécuter.

nms <- colnames(tf_mat) 
tf_mat_bind <- sapply(unique(nms), function(i)rowSums(tf_mat[, nms==i, drop=FALSE]))