Mam wektor numeryczny, jeden, który próbuję przekształcić w wektor znakowy, w którym każdy element jest oddzielony przecinkami.
> 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"
Jednak chcę, aby wynik wyglądał następująco:
"1", "2", "3", "4", "5"
Czy brakuje mi jakiegoś parametru z funkcji wklejania? Wsparcie!?
paste(shQuote(one), collapse=", ")
podaje[1] "\"1\", \"2\", \"3\", \"4\", \"5\""
, nie zawiera pojedynczego cudzysłowu.Mówisz, że chcesz wektor znakowy z tym wyjściem, ale inni, którzy znajdą to pytanie, mogą zamiast tego szukać jednej z tych funkcji:
Po pierwsze, sposób przygotowania danych wyjściowych do wprowadzenia do R; to byłoby
dput
:> dput(as.character(one)) c("1", "2", "3", "4", "5")
Po drugie, sposób na wyprowadzenie pliku csv, który byłby
write.csv
lubwrite.table
. Te funkcje przyjmują parametrfile
, który nie jest używany tutaj, w celu bezpośredniego wyprowadzenia do pliku.> 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"
źródło
Zakładając, że chcesz, aby wynik był w postaci ciągu znaków (a nie wektora znaków), możesz spróbować:
paste("'",as.character(one),"'",collapse=", ",sep="")
To daje pojedyncze cudzysłowy wokół liczb zamiast podwójnych cudzysłowów, ale w zasadzie wydaje się, że tego chcesz.
I zawsze możesz uciec, aby uzyskać podwójne cudzysłowy:
rs <- paste("\"",as.character(one),"\"",collapse=", ",sep="") cat(rs)
to powinno wypisać to, co chcesz, w podwójnych cudzysłowach.
źródło
Oprócz tego
shQuote
zobacz funkcjesQuote
idQuote
zawijanie tekstu odpowiednio w pojedyncze i podwójne cudzysłowy. Będziesz także chciał ustawićoptions(useFancyQuotes=FALSE)
zwykłe (jednokierunkowe) cudzysłowy ASCII.źródło
Coś podobnego z toString
toString(paste0("'",1:10,"'") )
źródło
Aby dodać do odpowiedzi Noah, jeśli chcesz użyć
paste
funkcji:paste(shQuote(one, type="sh"), collapse=", ")
Powinien dać ci:
[1] '1','2','3','4','5'
źródło