gpt4 book ai didi

r - 我从哪里开始使用 rJava?

转载 作者:行者123 更新时间:2023-12-04 02:16:00 25 4
gpt4 key购买 nike

我不是 Java 程序员。我编程 R 和 C++。我有一些想要包含在 R 包中的 Java 代码。该程序的基本原理是:

  • 从标准输入读取数据。
  • 运行 MCMC 链。
  • 输出到文件。

  • 我想将它转换为 R,在那里我可以从 R 运行程序。我熟悉 Rcpp 包并习惯了它的一些便利。我从哪里开始使用 rJava 包来学习使用此代码。

    具体来说,我有以下问题。
  • 如何将数据从 R 传输到 java,例如数值向量、因子等
  • 如何运行类的方法?
  • 如何在包中包含 java 代码?

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

    最佳答案

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

    myCommand <- paste("/path/to/java", argument1, argument2, sep=" ")
    system(shQuote(myCommand))

    然后使用任何有意义的 R 函数读入输出文件。

    更难的解决方案是编辑您的 Java 代码,使其不从 stdin 读取,而是传递一个向量或其他 Java 对象。我无法真正概括如何更改您的 Java 代码,但是如果 Java 函数最终需要提供一个向量,您可以这样做:
    .jinit()
    v <- .jnew("java/util/Vector")
    rVector <- as.character(1:10)
    addToV <- function( item ){
    v$add( item )
    }
    sapply(rVector, addToV)

    我总是发现在 rJava 中处理类型是一件相当痛苦的事情,正如你在上面看到的。

    一个可以为您节省大量时间的技巧是:当您在 rJava 中创建了一个 Java 对象时,您可以通过键入名称、美元符号,然后点击 Tab 来找出它的方法。所以使用上面创建的 v 对象输入“v$”,你应该得到这个:
    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$

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

    关于r - 我从哪里开始使用 rJava?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5781972/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com