Creando un vector separado por comas

Tengo un vector numérico, uno, que estoy tratando de convertir en un vector de caracteres donde cada elemento está separado por comas.

> 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" 

Sin embargo, quiero que el resultado se vea así:

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

¿Me falta algún parámetro de la función de pegar? ¿¡Ayuda!?

shQuote es probablemente la mejor manera de hacer esto. Específicamente, esto le proporciona el resultado que desea:

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

Si las comillas simples están bien, puede usar:

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

type="cmd" realidad proporciona comillas escapadas, que es lo que realmente es útil para la mayoría de los contextos, pero si realmente desea mostrarlo en alguna parte con comillas no guardadas, cat proporciona.

Usted dice que quiere un vector de caracteres con esa salida, pero otros que encuentran esta pregunta pueden estar buscando una de estas funciones:

Primero, una forma de preparar la salida para la entrada a R; eso sería dput :

 > dput(as.character(one)) c("1", "2", "3", "4", "5") 

En segundo lugar, una forma de generar un archivo csv, que sería write.csv o write.table . Estas funciones toman un file parámetros, que no se usa aquí, para enviar directamente a un archivo.

 > 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" 

Suponiendo que desea su salida en una cadena de caracteres (a diferencia de un vector de caracteres) puede intentar:

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

Eso le da comillas simples alrededor de los números en lugar de comillas dobles, pero es básicamente lo que parece querer.

Y siempre puedes escapar para obtener comillas dobles:

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

eso debería imprimir lo que quieras con las comillas dobles.

Además de shQuote , vea las funciones sQuote y dQuote para ajustar el texto en comillas simples y dobles, respectivamente. También querrá establecer options(useFancyQuotes=FALSE) para obtener comillas simples (unidireccionales) ASCII.

Solo para agregar a la respuesta de Noah si quieres usar la función de paste :

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

Debería darte:

 [1] '1','2','3','4','5'