Dans R: assemblage des éléments vectoriels en ligne, la conversion de vecteur de lignes à cordes
Est-il un "en ligne" de l'opération dans la R de convertir chaque ligne dans un vecteur de ce genre pour les chaînes?
> d= cbind("Data", c("2", "73"))
> d
[,1] [,2]
[1,] "Data" "2"
[2,] "Data" "73"
Ce que je veux est d'obtenir des chaînes de caractères comme
[,1]
[1,] "Data 2"
[2,] "Data 73"
Est-il un moyen facile de rejoindre éléments par ligne?
Vous devez vous connecter pour publier un commentaire.
Oui, il est. Il est appelé "appliquer" 😉
Voir
?apply
et?paste
collapse=" "
partie est assez facile si vous lisez la documentation?paste
.Après un rapide glace au
?paste
, il est clair queapply
n'est pas nécessaire, pour l'exemple donné. Il serait pratique s'il y a plusieurs colonnes si.Une manière générale, pour le faire sans recourir à
?apply
:Où
as.data.frame
est utilisé pour éviter des indices.Edit:
do.call
est une fonction qui prend une autre fonction comme premier argument, et une liste comme deuxième argument. Il est souvent utilisé pour envoyer les listes d'arguments aux fonctions (dans notre cas, les colonnes ded
àpaste()
). Nous envoyer d en tant que données.cadre (un type de liste) pour ce truc fonctionne.apply()
solution est beaucoup plus rapide pour les vecteurs. L'avantage c'est que l'on n'a pas besoin de se limiter à un seul type de données lors de l'application de la pâte, mais il y a aussi beaucoup d'inconvénients: par exemple, le collage par des lignes à la place de colonnes ne nécessite qu'un changement de numéro dans leapply()
solution, alors que celui-ci nécessite de grands changements dans le code. Dans l'ensemble, cette solution est uniquement pour mon cas d'utilisation typique, où j'ai fait un index avecexpand.grid()
et concaténer ces avecdo.call(paste)