首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从rJava开始从哪里开始?

从rJava开始从哪里开始?
EN

Stack Overflow用户
提问于 2011-04-25 18:58:04
回答 2查看 4K关注 0票数 11

我不是Java程序员。我编写了R和C++程序。我有一些java代码,我想包含在一个R包中。该方案的基本内容如下:

  1. 从标准输入读取数据。
  2. 运行MCMC链.
  3. 输出到文件.

我想把它转换成R,在那里我可以从R运行程序,我熟悉Rcpp软件包,并且习惯了它的一些便利之处。从哪里开始使用rJava包来学习使用这段代码。

具体来说,我有以下问题。

  1. 如何从R向java传输数据,例如数字向量、因子等。如何运行类的方法?
  2. ,如何将java代码包含在包中?

rJava文档不是很有用。有人有这方面的教程吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-26 21:12:46

有一种“简单”的方法可以做到这一点,也有一种更难的方法来做到这一点。我是一个简单的人,所以我倾向于简单的解决方案:

代码语言:javascript
复制
myCommand <- paste("/path/to/java", argument1, argument2, sep=" ")
system(shQuote(myCommand))

然后使用任何R函数读取输出文件。

更难的解决方案是编辑Java代码,这样它就不会从stdin读取,而是传递一个向量或其他Java对象。对于如何修改Java代码,我不能一概而论,但是如果Java函数最终需要得到一个向量,您可以这样做:

代码语言:javascript
复制
.jinit()
v <- .jnew("java/util/Vector")
rVector <- as.character(1:10)
addToV <- function( item ){
  v$add( item )
}
sapply(rVector, addToV)

正如您在上面看到的,我总是发现在rJava中处理类型是一个相当大的麻烦。

节省大量时间的一个技巧是:当您在rJava中创建了一个Java对象时,您可以通过键入名称、一个美元符号,然后点击选项卡,找出它的方法。因此,使用上面创建的v对象类型"v$“,您应该得到以下内容:

代码语言:javascript
复制
1> v$
v$add(                 v$hashCode()           v$contains(            v$size()               v$elementAt(           v$capacity()           v$containsAll(         v$firstElement()       v$removeElement(       v$iterator()           v$wait()
v$get(                 v$clone()              v$isEmpty()            v$toArray()            v$remove(              v$ensureCapacity(      v$removeAll(           v$insertElementAt(     v$removeElementAt(     v$listIterator()       v$getClass()
v$equals(              v$indexOf(             v$lastIndexOf(         v$toArray(             v$elements()           v$trimToSize()         v$retainAll(           v$lastElement()        v$setElementAt(        v$listIterator(        v$notify()
v$toString()           v$clear()              v$addAll(              v$addElement(          v$set(                 v$subList(             v$copyInto(            v$removeAllElements()  v$setSize(             v$wait(                v$notifyAll()
1> v$

祝你好运,如果你有特别的障碍,一定要大喊大叫。

票数 5
EN

Stack Overflow用户

发布于 2011-04-25 23:12:29

这包括在扣减插件开发文档中。虽然它面向扩展扣减额的包,但有些部分是通用的。

在R:http://www.deducer.org/pmwiki/pmwiki.php?n=Main.Development#wwjoir中运行java方法

将R对象引入java并使用java代码创建包:http://www.deducer.org/pmwiki/pmwiki.php?n=Main.Development#suaptijc

充分披露:扣减是我的项目。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5781972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档