1

我正在尝试使用包离散化 R 中的一组相当大的数值数据(30-50 列,500k-1M 行)RWeka

我的原始代码如下所示:

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 数据,而不是矩阵......

如何通过调试或使用更好的方法解决内存问题来解决此问题?

4

1 回答 1

0

您是否检查了列名在x哪里?

运行cbind(ndata[1],ndata$class)时,第二列是命名的ndata$class不是 class。你需要的是

x <- cbind(ndata[1], class=ndata$class)
于 2013-05-23T17:36:56.283 回答