Как я могу анализировать данные 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 = ",")