我正在爲一個java代碼準備一個R封裝器,我沒有自己寫(並且實際上我不知道java)。我正嘗試第一次使用rJava,並且我正在努力獲得.jcall的權利。如何使用rjava在R中調用String [] []
這裏是我編寫一個包裝中的Java代碼的提取物:
public class Model4R{
[...切...]
public String[][] runModel(String dir, String initFileName, String[] variableNames, int numSims) throws Exception {
[... ...切]
dir和initFileName是具有初始條件的目錄和文件名的字符串,變量名是字符串列表,我將在R中這樣寫:c(「var1」,「var2」,「var3 「,...),並且可以是fr的長度嗡一到五。最後,numSim是一個整數。
這裏是一個包裝函數我試探性的R代碼裏面:
runmodel <- function(dir, inFile, varNames, numSim){
hjw <- .jnew("Model4R")
out <- .jcall(hjw, "[[Ljava/lang/String", "runModel", as.character(dir), as.character(inFile), as.vector(varNames), as.integer(numSim))
return(out)
}
R中的錯誤是:
Error in .jcall(hjw, "[[Ljava/lang/String", "runModel", as.character(dir),
: method runModel with signature (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)[[Ljava/lang/String not found
我懷疑是JNI類型不正確對於String [] []。無論如何,任何可以指導我解決問題的方法都是值得歡迎的!
在rJava作者的幫助下,我已經解決了這個問題,但是謝謝,這確實是我錯過的要點! – franchong
@franchong:很高興聽到你有工作! :)在將來,請記住你可以[回答你自己的問題](https://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/)。這有助於解決相同問題的其他用戶,並阻止潛在的答覆者重複您的工作。歡迎來到Stack Overflow - 我希望你喜歡這個網站! –