Создание вектора, разделенного запятыми
у меня есть числовой вектор, один, который я пытаюсь превратить в символьный вектор, где каждый элемент разделяется запятыми.
> 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"
однако, я хочу, чтобы результат выглядел так:
"1", "2", "3", "4", "5"
я пропустил какой-то параметр из функции вставки? Помогите!?
5 ответов:
shQuote
вероятно, это лучший способ сделать это. В частности, это дает вам выход, который вы хотите:cat(paste(shQuote(one, type="cmd"), collapse=", "))
если одинарные кавычки, в порядке, вы можете использовать:
paste(shQuote(one), collapse=", ")
type="cmd"
на самом деле сбежал кавычки, что на самом деле полезно для большинства контекстов, но если вы действительно хотите, чтобы отобразить его где-то с неэкранированными кавычками,cat
предусматривает, что.
вы говорите, что хотите вектор символов с этим выходом, но другие, которые находят этот вопрос, могут искать одну из этих функций вместо этого:
во-первых, способ получить выход готов к вводу в R; это было бы
dput
:> dput(as.character(one)) c("1", "2", "3", "4", "5")
во-вторых, способ вывода csv-файла, который будет
write.csv
илиwrite.table
. Эти функции принимают параметрfile
, не используется здесь, чтобы непосредственно выводить в файл.> 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"
предполагая, что вы хотите, чтобы ваш вывод в символьной строке (в отличие от вектора символов) вы могли бы попробовать:
paste("'",as.character(one),"'",collapse=", ",sep="")
что дает вам одинарные кавычки вокруг чисел, а не двойные кавычки, но это в основном то, что вы, кажется, хотите.
и вы всегда можете убежать, чтобы получить двойные кавычки:
rs <- paste("\"",as.character(one),"\"",collapse=", ",sep="") cat(rs)
что нужно распечатать, что вы хотите с двойными кавычками.