我正在尝试使用RWeka
包将R中的大量数值数据(30-50列,500k-1M行)离散化。
我原来的代码看起来像这样:
disc_data <- Discretize(class~., data=ndata, na.action=na.pass)
但我的记忆错误。我认为一次只调用一个功能上的函数会有所帮助(实际上是2列,包括类),所以我写了这个:
x <- cbind(ndata[1],ndata$class)
disc_data <- Discretize(class~., data=x, na.action=na.pass)
我打算在某种循环中运行并将结果组合在一起。但是,这给了我:
Error in model.frame.default(formula = class ~ ., data = x, na.action = na.pass) :
object is not a matrix
要明确,Discretize会为数据采用data.frame,而不是矩阵......
如何通过调试或使用更好的方法解决内存问题来解决这个问题?
答案 0 :(得分:0)
您是否检查了x
中的列名称是什么?
当您运行cbind(ndata[1],ndata$class)
时,第二列的名称为ndata$class
,不是 class
。你需要的是
x <- cbind(ndata[1], class=ndata$class)