Создание фреймов данных R и файлов .rdata из Java

Каков наиболее эффективный и простой в использовании памяти (да, я знаю, что иногда они взаимоисключающие) способ создать фрейм данных R, а затем сохранить его в файл .Rdata с помощью Java?

Полегче со мной, я не Java-разработчик.


person JD Long    schedule 29.10.2010    source источник
comment
stackoverflow.com/questions/4034936/using-r-programming -in-java спросил неделю назад, вероятно, поможет.   -  person Spacedman    schedule 30.10.2010
comment
Должен ли он быть в форме .RData? Файл csv также будет импортирован/сохранен.   -  person Gavin Simpson    schedule 31.10.2010
comment
Csv - это то, что я использовал. Работает нормально в 99% случаев. Иногда он получает неправильные типы данных столбца.   -  person JD Long    schedule 31.10.2010
comment
Поможет ли просто использование colClasses?   -  person Aaron Statham    schedule 31.10.2010


Ответы (3)


Как насчет создания текстового файла данных с помощью structure() и извлечения его с помощью dget()?

data.frame(x= 1:5, y= as.factor(1:5), z= as.character(1:5))

дает тот же результат, что и:

structure(list(x = 1:5, y = structure(1:5, .Label = c("1", "2", 
"3", "4", "5"), class = "factor"), z = structure(1:5, .Label = c("1", 
"2", "3", "4", "5"), class = "factor")), .Names = c("x", "y", 
"z"), row.names = c(NA, -5L), class = "data.frame")

Само по себе это не эффективно для памяти, но у вас больше контроля над типами данных. Из R вы можете показать фрейм данных в указанном выше длинном формате, используя dput(), и извлечь его из текстового файла с помощью dget(), и его запись из Java не займет слишком много времени.

person J. Win.    schedule 31.01.2011
comment
Эй, это отличная идея, о которой я не подумал. Я не использовал structure() раньше, поэтому мне это и в голову не пришло. Я буду играть с этим. Спасибо! - person JD Long; 01.02.2011

Это может быть излишним, но rJava/JRI (http://rosuda.org/rJava/) дать вам Java API для R. По сути, вы получаете процесс R, которым вы можете программно управлять из своего кода Java, и, очевидно, вы можете обмениваться данными и создавать файл .RData через вызовы R.

person Dr G    schedule 31.10.2010

Мое первое желание — добавить что-то в MySQL, но накладные расходы на создание таблиц и т. д., вероятно, не имеют смысла, если эти файлы носят временный характер.

Я согласен с другими, что если вы хотите запустить R из Java, rJava — это то, что вам нужно, но это решение кажется немного неуклюжим.

В соответствии с простотой файлов CSV, но как насчет использования переносимого формата данных, такого как NetCDF http://en.wikipedia.org/wiki/NetCDF вместо этого? Они должны лучше сохранять форматы данных и могут быть доступны из Java ( http://www.unidata.ucar.edu/software/netcdf-java/), R ( http://cran.r-project.org/web/packages/RNetCDF/ ) и даже GDAL.

(Мой астрологический опыт заставляет меня упомянуть FITS как вариант.)

person Jeffrey Breen    schedule 23.12.2010