Eu tenho um vetor numérico, um, que estou tentando transformar em um vetor de caracteres em que cada elemento é separado por vírgulas.
> 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"
No entanto, quero que a saída seja semelhante a:
"1", "2", "3", "4", "5"
Estou faltando algum parâmetro da função colar? Socorro!?
paste(shQuote(one), collapse=", ")
dá[1] "\"1\", \"2\", \"3\", \"4\", \"5\""
, não a variante entre aspas simples.Você diz que deseja um vetor de caracteres com essa saída, mas outras pessoas que encontrarem esta pergunta podem estar procurando por uma destas funções:
Primeiro, uma maneira de deixar a saída pronta para entrada em R; isso seria
dput
:> dput(as.character(one)) c("1", "2", "3", "4", "5")
Em segundo lugar, uma maneira de gerar um arquivo csv, que seria
write.csv
ouwrite.table
. Essas funções usam um parâmetrofile
, não usado aqui, para produzir diretamente em um arquivo.> 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"
fonte
Supondo que você queira sua saída em uma string de caracteres (em oposição a um vetor de caracteres), você pode tentar:
paste("'",as.character(one),"'",collapse=", ",sep="")
Isso fornece aspas simples em torno dos números em vez de aspas duplas, mas é basicamente o que você parece querer.
E você sempre pode escapar para obter aspas duplas:
rs <- paste("\"",as.character(one),"\"",collapse=", ",sep="") cat(rs)
que deve imprimir o que você deseja com as aspas duplas.
fonte
Além disso
shQuote
, consulte as funçõessQuote
edQuote
para quebrar o texto entre aspas simples e duplas, respectivamente. Você também deseja definiroptions(useFancyQuotes=FALSE)
para obter citações ASCII simples (unidirecionais).fonte
Algo semelhante com toString
toString(paste0("'",1:10,"'") )
fonte
Apenas para acrescentar à resposta de Noah se você quiser usar a
paste
função:paste(shQuote(one, type="sh"), collapse=", ")
Deve dar a você:
[1] '1','2','3','4','5'
fonte