Как я могу анализировать данные CSV из символьного вектора для извлечения кадра данных?

Функции read.table и read.csv в R используются для анализа файла или URL-адреса, содержащих данные с разделителями, и создания кадра данных R. Однако у меня уже есть вектор символов, который содержит данные с разделителями CSV (с использованием запятой и \n в качестве разделителей столбцов и записей), поэтому мне не нужно читать его из файла или URL-адреса. Как передать этот символ символа в read.table, read.csv или scan(), не записывая его сначала в файл на диске и прочитывая его обратно? Я понимаю, что запись на диск возможна, но я ищу решение, которое не требует этого лишнего обращения и может напрямую считывать данные из символьного вектора.

Ответы

Ответ 1

Вы можете использовать textConnection(), чтобы передать вектор символов в read.table(). Пример:

x  <- "first,second\nthird,fourth\n"
x1 <- read.table(textConnection(x), sep = ",")
# x1
     V1     V2
1 first second
2 third fourth

Ответ найден в списке R.

2017 EDIT

Семь лет спустя я, вероятно, сделаю это вот так:

read.table(text = x, sep = ",")

Ответ 2

Небольшое добавление к ответам neilfws. Эта функция обертки отлично подходит для ответа на вопросы о потоке stackoverflow, когда вопроситель помещает необработанные данные в свой вопрос, а не предоставляет кадр данных.

textToTable <- function(text, ...)
{
   dfr <- read.table(tc <- textConnection(text), ...)
   close(tc)
   dfr
}

С использованием, например

textToTable("first,second\nthird,fourth\n", sep = ",")