Ответ 1
Там есть "простой" способ сделать это и несколько более сложный способ сделать это. Я простой человек, поэтому я склоняюсь к простому решению:
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, чтобы быть значительной болью, как вы можете видеть выше.
Один совет, который сэкономит вам много времени, таков: когда у вас есть Java-объект, созданный в rJava, вы можете найти его методы, набрав имя, знак доллара, а затем нажмите вкладку. Поэтому, используя созданный выше объект 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$
Удачи, и будьте уверены, и кричите, если у вас есть определенные коряги.