Есть ли способ использовать чтение.csv для чтения из строкового значения, а не из файла в R?
Я пишу пакет R, где код R разговаривает с приложением Java. Приложение Java выводит строку в формате CSV, и я хочу, чтобы код R мог напрямую считывать строку и преобразовывать ее в данные.рамка.
5 ответов:
редактирование 7-летнего ответа: к настоящему времени, это много проще благодаря
text=
аргумент, который был добавлен вread.csv()
и так:R> data <- read.csv(text="flim,flam + 1.2,2.2 + 77.1,3.14") R> data flim flam 1 1.2 2.20 2 77.1 3.14 R>
Да, посмотрите на справку для
textConnection()
-- the очень мощный понятие в R заключается в том, что по существу все читатели (например,read.table()
и его варианты) доступ к этим подключение объект, который может быть файлом, или удаленным URL, или каналом, поступающим из другого приложения, или ... текст как в вашем случае.тот же трюк используется для так называемых документов здесь:
> lines <- " + flim,flam + 1.2,2.2 + 77.1,3.14 + " > con <- textConnection(lines) > data <- read.csv(con) > close(con) > data flim flam 1 1.2 2.20 2 77.1 3.14 >
обратите внимание, что это простой способ построить что-то, но это также дорого из-за повторного разбора все данные. Есть и другие способы добраться от Java до R, но это должно заставить вас идти быстро. На очереди эффективность...
обратите внимание, что в текущих версиях R вам больше не нужен
textConnection()
, можно просто сделать это:> states.str='"State","Abbreviation" + "Alabama","AL" + "Alaska","AK" + "Arizona","AZ" + "Arkansas","AR" + "California","CA"' > read.csv(text=states.str) State Abbreviation 1 Alabama AL 2 Alaska AK 3 Arizona AZ 4 Arkansas AR 5 California CA
да. Например:
string <- "this,will,be\na,data,frame" x <- read.csv(con <- textConnection(string), header=FALSE) close(con) #> x # V1 V2 V3 #1 this will be #2 a data frame
Предположим, у вас есть файл с именем Томми.csv (да, творческий, я знаю...), который имеет содержание
столбец col1 и col2 \П 1 1 \п 2 2 \н 3 3
где каждая строка разделена escape-символом "\n".
этот файл можно прочитать с помощью
эта функция обертывает ответ Дирка в удобную форму. Это блестяще для ответов на вопросы о SO, где спрашивающий только что сбросил данные на экран.
text_to_table <- function(text, ...) { dfr <- read.table(tc <- textConnection(text), ...) close(tc) dfr }
чтобы использовать его, сначала скопируйте данные на экране и вставьте в текстовый редактор.
foo bar baz
1 2 a
3 4 bтеперь оберните его с
text_to_table
, кавычки и любые другие аргументы дляread.table
.text_to_table("foo bar baz 1 2 a 3 4 b", header = TRUE)