104 votes

Création d'un vecteur séparé par des virgules

J'ai un vecteur numérique, un, que j'essaie de transformer en vecteur de caractère où chaque élément est séparé par des virgules.

 > one = c(1:5)
> paste(as.character(one), collapse=", ")
[1] "1, 2, 3, 4, 5"
> paste(as.character(one), sep="' '", collapse=", ")
[1] "1, 2, 3, 4, 5"

Cependant, je veux que la sortie ressemble à:

 "1", "2", "3", "4", "5" 

Est-ce que je manque un paramètre de la fonction coller? Aider!?

108voto

Noah Points 1231

shQuote est probablement la meilleure façon de le faire. Plus précisément, cela vous donne la sortie que vous voulez :

 cat(paste(shQuote(one, type="cmd"), collapse=", "))

Si les guillemets simples vous conviennent, vous pouvez utiliser :

 paste(shQuote(one), collapse=", ")

type="cmd" fournit en fait des guillemets échappés, ce qui est réellement utile pour la plupart des contextes, mais si vous voulez vraiment l'afficher quelque part avec des guillemets non échappés, cat fournit.

19voto

joran Points 68079

En supposant que vous vouliez votre sortie dans une chaîne de caractères (par opposition à un vecteur de caractères), vous pouvez essayer :

 paste("'",as.character(one),"'",collapse=", ",sep="")

Cela vous donne des guillemets simples autour des nombres plutôt que des guillemets doubles, mais c'est essentiellement ce que vous semblez vouloir.

Et vous pouvez toujours vous échapper pour obtenir des guillemets :

 rs <- paste("\"",as.character(one),"\"",collapse=", ",sep="")
cat(rs)

qui devrait imprimer ce que vous voulez avec les guillemets doubles.

5voto

Ferroao Points 486

Quelque chose de similaire avec toString

 toString(paste0("'",1:10,"'") )

4voto

Hong Ooi Points 17761

En plus de shQuote , consultez les fonctions sQuote et dQuote pour placer le texte entre guillemets simples et doubles respectivement. Vous voudrez également définir options(useFancyQuotes=FALSE) pour obtenir des guillemets ASCII simples (unidirectionnels).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X