Подтвердить что ты не робот

Создание вектора, разделенного запятыми

У меня есть числовой вектор, один, который я пытаюсь превратить в вектор символов, где каждый элемент разделяется запятыми.

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

Мне не хватает какого-либо параметра из функции вставки? Помогите!

4b9b3361

Ответ 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.