これを行うには「簡単な」方法と、これを行うのがやや難しい方法があります。私は単純な人間なので、単純な解決策に傾倒しています。
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で型を扱うのはかなり苦痛だといつも思っています。
時間を大幅に節約するためのヒントの1つは、次のとおりです。rJavaでJavaオブジェクトを作成したら、名前とドル記号を入力してタブを押すことで、そのメソッドを理解できます。したがって、上記で作成した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$
幸運を祈ります。特定の問題がある場合は、必ず大声で叫んでください。