J'ai un vecteur numérique, un, que j'essaie de transformer en vecteur de caractères 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? Aidez-moi!?
paste(shQuote(one), collapse=", ")
donne[1] "\"1\", \"2\", \"3\", \"4\", \"5\""
, pas une variante incluse entre guillemets.Vous dites que vous voulez un vecteur de caractères avec cette sortie, mais d'autres qui trouvent cette question peuvent rechercher l'une de ces fonctions à la place:
Premièrement, un moyen de préparer la sortie pour l'entrée dans R; ce serait
dput
:> dput(as.character(one)) c("1", "2", "3", "4", "5")
Deuxièmement, un moyen de générer un fichier csv, qui serait
write.csv
ouwrite.table
. Ces fonctions prennent un paramètrefile
, non utilisé ici, pour sortir directement dans un fichier.> write.table(matrix(as.character(one),nrow=1), sep=",", row.names=FALSE, col.names=FALSE) "1","2","3","4","5" > write.csv(matrix(as.character(one),nrow=1),row.names=FALSE) "V1","V2","V3","V4","V5" "1","2","3","4","5"
la source
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 doubles:
rs <- paste("\"",as.character(one),"\"",collapse=", ",sep="") cat(rs)
qui devrait imprimer ce que vous voulez avec les guillemets doubles.
la source
En plus de
shQuote
, voir les fonctionssQuote
etdQuote
pour envelopper le texte entre guillemets simples et doubles respectivement. Vous voudrez également définiroptions(useFancyQuotes=FALSE)
pour obtenir des guillemets ASCII simples (unidirectionnels).la source
Quelque chose de similaire avec toString
toString(paste0("'",1:10,"'") )
la source
Juste pour ajouter à la réponse de Noah si vous souhaitez utiliser la
paste
fonction:paste(shQuote(one, type="sh"), collapse=", ")
Devrait vous donner:
[1] '1','2','3','4','5'
la source