Есть «простой» способ сделать это и несколько более сложный способ сделать это. Я простой человек, поэтому я склоняюсь к простому решению:
myCommand <- paste("/path/to/java", argument1, argument2, sep=" ")
system(shQuote(myCommand))
Затем прочитайте выходной файл, используя любую функцию R, которая имеет смысл.
Несколько более сложное решение состоит в том, чтобы отредактировать ваш код Java, чтобы он не читался из стандартного ввода, а передавался вектору или другому объекту Java. Я не могу обобщить, как изменить ваш код Java, но если функции Java в конечном итоге нужно передать вектор, вы должны сделать это примерно так:
.jinit()
v <- .jnew("java/util/Vector")
rVector <- as.character(1:10)
addToV <- function( item ){
v$add( item )
}
sapply(rVector, addToV)
Я всегда находил работу с типами в rJava довольно болезненной, как вы можете видеть выше.
Один совет, который сэкономит вам значительное время, заключается в следующем: если у вас есть объект Java, созданный в rJava, вы можете определить его методы, набрав имя, знак доллара и нажав клавишу 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$
Удачи, и обязательно и кричите, если у вас есть конкретные загвоздки.
person
JD Long
schedule
26.04.2011