La concaténation de N colonnes de texte dans la R
J'ai un nombre arbitraire de colonnes contenant des données de texte qui ont été assemblés à l'aide de la cbind() de commande, par exemple:
[1,] "Text 1,1" "Text 1,2" "Text 1,n"
[2,] "Text 2,1" "Text 2,2" "Text 2,n"
[3,] "Text 3,1" "Text 3,2" "Text 3,n"
[n,] "Text n,1" "Text n,2" "Text n,n"
Je veux concaténer chaque ligne ensemble, donc je suis parti avec:
[1,] "Text 1,1 Text 1,2 Text 1,n"
[n,] "Text n,1 Text n,2 Text n,n"
Actuellement, je suis en train de faire cela à l'aide d'une boucle for (où textColumns est le cbind() de la matrice):
concatColumn <- c()
for (i in 1:ncol(textColumns)) concatColumn <- paste(concatColumn,textColumns[,i])
Est-il plus simple, plus élégante façon de le faire dans la R? J'ai été en regardant autour de façons de le faire à l'aide de la pâte() la commande sans une boucle for, mais je n'ai pas été capable de trouver une solution. Je vous remercie d'avance pour votre aide!
OriginalL'auteur Timothy P. Jurka | 2011-12-28
Vous devez vous connecter pour publier un commentaire.
C'est facile, avec un ensemble de données.cadre,
apply(m, 1, paste, collapse=" ")
de travailler directement sur une matrice.C'est ce que je cherchais. L'appliquer() la méthode fonctionne à merveille. Merci!!!! La conversion des données.cadre de la méthode m'a donné un peu bizarre de sortie:
[1] "c(\"t1\", \"t2\", \"t3\")" "c(\"t4\", \"t5\", \"t6\")" "c(\"t7\", \"t8\", \"t9\")"
OriginalL'auteur baptiste
Suffit d'utiliser
paste
avec sescollapse
argument:paste
est vectorisée, de sorte que vous pouvez nourrir plusieurs arguments à la fois.cols <- cbind(c("1","2","3"),c("4","5","6"),c("7","8","9"))
les rendements d'un caractère de vecteur de[1] "1" "2" "3" "4" "5" "6" "7" "8" "9"
, alors que j'ai besoin de trois lignes avec[1] "1 4 7"
[2] "2 5 8"
etc.OriginalL'auteur Dirk Eddelbuettel