Ich habe einen numerischen Vektor, einen, den ich in einen Zeichenvektor verwandeln möchte, bei dem jedes Element durch Kommas getrennt ist.
> 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"
Ich möchte jedoch, dass die Ausgabe wie folgt aussieht:
"1", "2", "3", "4", "5"
Vermisse ich einen Parameter in der Einfügefunktion? Hilfe!?
paste(shQuote(one), collapse=", ")
gibt[1] "\"1\", \"2\", \"3\", \"4\", \"5\""
keine einfache einfache beiliegende Variante an.Sie sagen, Sie möchten einen Zeichenvektor mit dieser Ausgabe, aber andere, die diese Frage finden, suchen möglicherweise stattdessen nach einer dieser Funktionen:
Erstens eine Möglichkeit, die Ausgabe für die Eingabe in R vorzubereiten; das wäre
dput
:> dput(as.character(one)) c("1", "2", "3", "4", "5")
Zweitens eine Möglichkeit, eine CSV-Datei auszugeben, die
write.csv
oder wärewrite.table
. Diese Funktionen verwenden einen Parameterfile
, der hier nicht verwendet wird, um direkt in eine Datei auszugeben.> 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"
quelle
Angenommen, Sie möchten Ihre Ausgabe in einer Zeichenfolge (im Gegensatz zu einem Vektor von Zeichen), können Sie Folgendes versuchen:
paste("'",as.character(one),"'",collapse=", ",sep="")
Das gibt Ihnen einfache Anführungszeichen um die Zahlen anstatt doppelte Anführungszeichen, aber es ist im Grunde das, was Sie zu wollen scheinen.
Und Sie können jederzeit entkommen, um doppelte Anführungszeichen zu erhalten:
rs <- paste("\"",as.character(one),"\"",collapse=", ",sep="") cat(rs)
das sollte ausdrucken, was Sie mit den doppelten Anführungszeichen wollen.
quelle
Zusätzlich zu
shQuote
finden , die FunktionensQuote
und diedQuote
jeweils Text in einfachen und doppelten Anführungszeichen wickeln. Sie möchten auch festlegenoptions(useFancyQuotes=FALSE)
, dass einfache (unidirektionale) ASCII-Anführungszeichen angezeigt werden.quelle
Ähnliches gilt für toString
toString(paste0("'",1:10,"'") )
quelle
Nur um Noahs Antwort zu ergänzen, wenn Sie die
paste
Funktion verwenden möchten :paste(shQuote(one, type="sh"), collapse=", ")
Sollte Ihnen geben:
[1] '1','2','3','4','5'
quelle