为什么Rscript无法运行R可以处理的FSelector脚本?

时间:2013-07-25 19:50:03

标签: r

这是个人记录,因为谷歌很难解决这个问题,我想我会在几年内再次遇到这个问题。

我有一个类似的脚本:

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

为什么会这样?

1 个答案:

答案 0 :(得分:1)

这是因为Rscript默认不加载rJava库,这是FSelector所需的,但显然在加载FSelector时没有加载。相反,标准的“R”命令默认加载rJava。

要解决此问题,请添加:

library(rJava)

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