从Java创建R数据帧和.rdata文件

时间:2010-10-29 22:24:16

标签: java r dataframe

什么是最有效和最简单的内存(是的,我知道这些有时是互斥的)创建R数据框然后使用Java将其保存到.Rdata文件的方法?

虽然我很容易,但我不是Java开发人员。

3 个答案:

答案 0 :(得分:2)

如何使用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中编写太多的解析。

答案 1 :(得分:0)

这可能有点过分,但是rJava / JRI(http://rosuda.org/rJava/)为你提供了一个Java API。基本上你得到一个R进程,你可以用你的Java代码以编程方式控制,显然你可以分享数据并通过R调用创建.RData文件。

答案 2 :(得分:0)

我的第一个倾向是在MySQL中抛出东西,但是如果这些文件本质上是暂时的,那么创建表格等的开销可能没有意义。

我同意其他人的意见,如果你想从Java运行R,那么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作为选项。)