0

这是个人记录,因为这个问题对谷歌来说很难,我想我会在几年后再次遇到它。

我有一个像这样的脚本:

library(FSelector)
table <- read.csv("somefile", header=0);
table <- table[,colSums(is.na(table))<nrow(table)]
imputed_table <- apply(table, 2, function(x){x <- replace(x, is.na(x), mean(x, na.rm=TRUE))});
nms <- colnames(table)
model <- information.gain(as.formula(paste(nms[length(nms)],"~.")), table)

运行时:

R --no-save < IG.R

这工作正常,并打印模型。

运行时:

Rscript ./IG.R

这会因错误而崩溃:

Error in .jarray(x) : could not find function "getClass"
Calls: information.gain ... read_model_frame_into_Weka -> read_data_into_Weka -> .jcall -> .jarray -> .Call
Execution halted

为什么会这样?

4

1 回答 1

1

发生这种情况是因为 Rscript 默认不加载 rJava 库,这是 FSelector 所需的,但显然在加载 FSelector 时没有加载。相比之下,标准的“R”命令默认加载rJava

要解决此问题,请添加:

library(rJava)

到 information.gain 调用之前的脚本。

于 2013-07-25T19:51:23.447 回答