什么是最有效和最简单的内存(是的,我知道这些有时是互斥的)创建R数据框然后使用Java将其保存到.Rdata文件的方法?
虽然我很容易,但我不是Java开发人员。
答案 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作为选项。)