Создание вектора, разделенного запятыми
У меня есть числовой вектор, один, который я пытаюсь превратить в вектор символов, где
каждый элемент разделяется запятыми.
> 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"
Мне не хватает какого-либо параметра из функции вставки?
Помогите!
Ответы
Ответ 1
shQuote
, вероятно, лучший способ сделать это. В частности, это дает вам нужный вам результат:
cat(paste(shQuote(one, type="cmd"), collapse=", "))
Если одинарные кавычки в порядке, вы можете использовать:
paste(shQuote(one), collapse=", ")
type="cmd"
на самом деле предоставляет экранированные кавычки, что действительно полезно для большинства контекстов, но если вы действительно хотите отобразить его где-то с невыпадающими кавычками, cat
предоставляет это.
Ответ 2
Вы говорите, что вам нужен вектор символов с этим выходом, но другие, кто найдет этот вопрос, могут искать одну из этих функций:
Во-первых, способ получения вывода для ввода в 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"
Ответ 3
Предполагая, что вы хотите свой вывод в символьной строке (в отличие от вектора символов), вы можете попробовать:
paste("'",as.character(one),"'",collapse=", ",sep="")
Это дает одинарные кавычки вокруг чисел, а не двойные кавычки, но в основном это то, что вам кажется.
И вы всегда можете убежать, чтобы получить двойные кавычки:
rs <- paste("\"",as.character(one),"\"",collapse=", ",sep="")
cat(rs)
который должен распечатать то, что вы хотите, с двойными кавычками.
Ответ 4
В дополнение к shQuote
см. функции sQuote
и dQuote
для обертывания текста в одинарных и двойных кавычках соответственно. Вы также захотите установить options(useFancyQuotes=FALSE)
для получения простых (однонаправленных) котировок ASCII.