R / JAVA / JGR这是如何工作的?

时间:2012-01-26 17:23:23

标签: java r

我正在尝试在java和r之间做一些工作(使用一些交叉相关工具和其他统计函数),并尝试使用JGR包。我花了相当多的时间查看文档,并且很难弄清楚这个JGR包是如何工作的,甚至是它的目的是什么。几个问题:

1)我在哪里编写代码?在RGUI中,在Eclipse中,在我还没有体验到的其他一些控制台中?

我从启动JGR开始:

> JGR()


Copy the following into WordPad and save as "jgrLaunch.bat"

set R_HOME=C:\PROGRA~1\R\R-214~1.0
set R_LIBS=C:\Users\~\Documents\R\win-library\2.14
set R_LIBS_USER=C:\Users\~\Documents\R\win-library\2.14;C:\Program Files\R\R-2.14.0\library
jgr-1_62.exe --rhome=C:\PROGRA~1\R\R-214~1.0 --libpath=C:\Users\~\Documents\R\win-library\2.14

Starting JGR ...
> 

当我将参考手册中的示例放入R时,我得到以下内容:

> jgr.addMenu("Workspace")
jgr.addMenu() cannot be used outside JGR.
> jgr.addMenuItem("Workspace","Browse","ls()")
jgr.addMenuItem() cannot be used outside JGR.
> jgr.addMenuSeparator("Workspace")
jgr.addMenuSeparator() cannot be used outside JGR.
> jgr.addMenuItem("Workspace","Browse (pos=2)","ls(pos=2)")
jgr.addMenuItem() cannot be used outside JGR.
> menus <- jgr.getMenuNames()
jgr.getMenuNames() cannot be used outside JGR.
> index <- which(menus=="Packages & Data")
> if(length(index)==0) index <- 1
> jgr.insertMenu("User menu",index)
jgr.insertMenu() cannot be used outside JGR.
> jgr.addMenuItem("User menu","A good place for user generated menus is","print(’before Packages & Data’)")
jgr.addMenuItem() cannot be used outside JGR.

但是当我把它放入日食时,<-之类的东西似乎不合适。

2)有没有人有任何实际的代码?我通常可以通过一些代码示例来解决这些问题,但是无法跟踪任何问题。

3)对于可能更好/更容易的方式(即不同的包或设置)的任何建议?

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

JGR是用于R 的Java GUI,您可以通过双击JGR图标来运行它 - 您可以从http://rforge.net/JGR/web-files/jgr-1_62-x64.exe(64位)或http://rforge.net/JGR/web-files/jgr-1_62.exe下载该图标(32位)。你在R中加载的只是支持R包而你在Rgui中运行它,而不是在JGR中运行(因此错误)。

JGR本身使用来自rJava的JRI(Java / R接口)将R加载到Java进程中。如果您有兴趣使用Java中的R,您也可以这样做。该API记录在http://rforge.net/Rserve/doc/

您可以在Java端使用完全相同的API Rserve,它使用客户端/服务器通信模型。

您可以查看stats-rosuda-devel邮件列表,这是一个讨论JGR,rJava,JRI,Rserve等的地方。

答案 1 :(得分:1)

3)最简单(最快的开发)可能是RCaller 2.0

它有点慢,因为Java必须进行外部调用,并且它通过xml传递所有数据。您可以找到有用的博客herehere

我没有尝试的其他替代方案是:

  1. Rserve
  2. rJava
  3. Renjin正在开发......