【问题标题】:Creating R data frames and .rdata files from Java从 Java 创建 R 数据帧和 .rdata 文件
【发布时间】:2010-10-29 22:24:16
【问题描述】:

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

不过,请放轻松,我不是 Java 开发人员。

【问题讨论】:

  • stackoverflow.com/questions/4034936/using-r-programming-in-java 一周前询问可能会有所帮助。
  • 是否需要为 .RData 格式?一个 csv 文件也可以导入/保存。
  • Csv 是我一直在使用的。 99% 的时间都可以正常工作。有时它会导致列数据类型错误。
  • 只使用 colClasses 会有帮助吗?

标签: java r dataframe


【解决方案1】:

使用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(),所以我没有想到它。我会玩的。谢谢!
【解决方案2】:

这可能有点矫枉过正,但 rJava/JRI (http://rosuda.org/rJava/) 为您提供了 R 的 Java API。本质上,您获得了一个 R 进程,您可以通过 Java 代码以编程方式控制它,显然您可以共享数据和通过 R 调用创建一个 .RData 文件。

【讨论】:

    【解决方案3】:

    我的第一个想法是在 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 作为一个选项。)

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 2016-10-19
      • 2017-12-15
      • 2014-09-10
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 2014-08-05
      相关资源
      最近更新 更多