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

Создание вектора через запятую

r

66920 просмотра

6 ответа

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

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

Я пропускаю какой-то параметр из функции вставки? Помогите!?

Автор: ATMathew Источник Размещён: 12.11.2019 08:42

Ответы (6)


81 плюса

Решение

shQuoteвероятно, лучший способ сделать это. В частности, вы получите желаемый результат:

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

Если одинарные кавычки в порядке, вы можете использовать:

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

type="cmd"на самом деле предоставляет экранированные кавычки, что на самом деле полезно для большинства контекстов, но если вы действительно хотите отобразить его где-нибудь с неэкранированными кавычками, catэто возможно.

Автор: Noah Размещён: 14.06.2011 05:25

37 плюса

Вы говорите, что хотите символьный вектор с этим выводом, но другие, которые находят этот вопрос, могут вместо этого искать одну из этих функций:

Во-первых, способ подготовить вывод для ввода в 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"
Автор: Aaron - Reinstate Monica Размещён: 14.06.2011 06:02

13 плюса

Предполагая, что вы хотите, чтобы ваш вывод был в символьной строке (в отличие от вектора символов), вы можете попробовать:

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

Это дает вам одинарные кавычки вокруг чисел, а не двойные кавычки, но это в основном то, что вы, кажется, хотите.

И вы всегда можете избежать двойных кавычек:

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

это должно распечатать, что вы хотите с двойными кавычками.

Автор: joran Размещён: 14.06.2011 05:20

4 плюса

Кроме того shQuote, смотрите функции sQuoteи dQuoteдля переноса текста в одинарные и двойные кавычки соответственно. Вы также хотите установить, options(useFancyQuotes=FALSE)чтобы получить простые (однонаправленные) кавычки ASCII.

Автор: Hong Ooi Размещён: 15.06.2011 02:13

2 плюса

Нечто похожее с toString

toString(paste0("'",1:10,"'") )
Автор: Ferroao Размещён: 29.11.2018 08:55

1 плюс

Просто добавьте ответ Ноя, если вы хотите использовать pasteфункцию:

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

Должен дать вам:

[1] '1','2','3','4','5'
Автор: Kevin Ogoro Размещён: 11.01.2018 12:03
Вопросы из категории :
32x32