看起來您正在嘗試在腳本的某個地方使用.when
,但是.when
沒有這種方法。
問題可能在於您的某個庫(R
?)比您使用的文檔版本舊,或者撥打.when
的電話首先不存在。
解決此問題的最簡單方法是搜索並找出.when
在您的代碼中被調用的位置,然後檢查是否有其他方法可用,或者您只需要更新到更新的庫。
在打開每個文件之間以及在將它們讀入表格之間添加一些調試代碼以打印到控制檯,這樣您至少可以看到代碼在失敗之前獲得的距離。
有關錯誤所在稱爲參考,你可以去看看源rJava
這裏: https://github.com/cran/rJava/blob/master/R/reflection.R
特別注意在最後else塊你的錯誤,當rJave試圖尋找一個功能,但找不到它:
### syntactic sugar to allow object$field and object$methods(...)
### first attempts to find a field of that name and then a method
._jobjRef_dollar <- function(x, name) {
if (hasField(x, name)){
.jfield(x, , name)
} else if(hasJavaMethod(x, name)) {
function(...) .jrcall(x, name, ...)
} else if(hasClass(x, name)) {
cl <- .jcall(x, "Ljava/lang/Class;", "getClass")
inner.cl <- .jcall("RJavaTools", "Ljava/lang/Class;", "getClass", cl, name, FALSE)
new("jclassName", name=.jcall(inner.cl, "S", "getName"), jobj=inner.cl)
} else if(is.character(name) && length(name) == 1L && name == "length" && isJavaArray(x)){
length(x)
} else {
stop(sprintf("no field, method or inner class called '%s' ", name))
}
}
「*在我發佈函數之前*」 - 總是包含相關信息。如果需要,將其格式化爲更具吸引力(包括頂部的TL; DR部分)。 –