Как я могу проанализировать данные CSV из символьного вектора, чтобы извлечь кадр данных? - PullRequest
16 голосов
/ 16 июля 2010

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

Ответы [ 2 ]

26 голосов
/ 16 июля 2010

Вы можете использовать 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 РЕДАКТИРОВАТЬ

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

read.table(text = x, sep = ",")
3 голосов
/ 16 июля 2010

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

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

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

textToTable("first,second\nthird,fourth\n", sep = ",")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...