R:如何使用randomForest的长向量?

时间:2014-03-17 12:56:12

标签: r vector random-forest

R 3.0.0的一个新功能是引入了长向量。但是,.C()和.Fortran()不接受长矢量输入。在R-bloggers我找到:

  

这是一种预防措施,因为现有代码不太可能被编写来处理长向量(并且R包装器通常假设长度(x)是整数)

我使用R-package randomForest,这个包显然需要.Fortran(),因为它崩溃留下错误信息

  

randomForest.default出错:.Fortran

不支持长向量(参数20)

如何克服这个问题?我在Windows 7 64位计算机上使用randomForest 4.6-7(在R 3.0.2下构建)。

1 个答案:

答案 0 :(得分:2)

保证randomForest接受输入数据帧的唯一方法是确保数据帧内的向量的长度不超过2 ^ 31-1(即不长)。如果必须从包含长向量的数据框开始,那么您将拥有数据框的子集以实现向量的可接受维度。这是一种可以对数据框进行子集化以使其适用于randomForest的方法:

# given data frame 'df' with long vectors
maxDim <- 2^31 - 1;
df[1:maxDim, ]

然而,这样做存在一个主要问题,即您将丢弃出现在第2 ^ 31行或更高行中的所有观察(即特征)。实际上,您可能不需要这么多观察来运行随机森林计算。您的问题的简单解决方法是简单地采用原始数据集的统计有效子样本,其大小不超过2 ^ 31 - 1.使用不是long类型的R向量存储数据,并且您的randomForest计算应该运行没有任何问题。