Каков наиболее эффективный и простой в использовании памяти (да, я знаю, что иногда они взаимоисключающие) способ создать фрейм данных R, а затем сохранить его в файл .Rdata с помощью Java?
Полегче со мной, я не Java-разработчик.
Каков наиболее эффективный и простой в использовании памяти (да, я знаю, что иногда они взаимоисключающие) способ создать фрейм данных R, а затем сохранить его в файл .Rdata с помощью Java?
Полегче со мной, я не Java-разработчик.
Как насчет создания текстового файла данных с помощью 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 не займет слишком много времени.
structure()
раньше, поэтому мне это и в голову не пришло. Я буду играть с этим. Спасибо!
- person JD Long; 01.02.2011
Это может быть излишним, но rJava/JRI (http://rosuda.org/rJava/) дать вам Java API для R. По сути, вы получаете процесс R, которым вы можете программно управлять из своего кода Java, и, очевидно, вы можете обмениваться данными и создавать файл .RData через вызовы R.
Мое первое желание — добавить что-то в 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 как вариант.)