biglm发现错误的data.frame来获取数据

时间:2015-10-12 10:17:27

标签: r assign lm chunks chunking

我正在尝试创建数据集的块来运行biglm。 (使用fastLm我需要350Gb的RAM)

我的完整数据集名为res。作为实验,我大大减小到10.000行。我想创建与biglm一起使用的块。

library(biglm)

formula <- iris$Sepal.Length ~ iris$Sepal.Width

test <- iris[1:10,]

biglm(formula, test)

不知何故,我得到以下输出:

> test <- iris[1:10,]
> test
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1           5.1         3.5          1.4         0.2  setosa
2           4.9         3.0          1.4         0.2  setosa
3           4.7         3.2          1.3         0.2  setosa
4           4.6         3.1          1.5         0.2  setosa
5           5.0         3.6          1.4         0.2  setosa
6           5.4         3.9          1.7         0.4  setosa
7           4.6         3.4          1.4         0.3  setosa
8           5.0         3.4          1.5         0.2  setosa
9           4.4         2.9          1.4         0.2  setosa
10          4.9         3.1          1.5         0.1  setosa

上面你可以看到矩阵test包含10行。然而,当运行biglm时,它显示的样本大小为150

> biglm(formula, test)
Large data regression model: biglm(formula, test)
Sample size =  150 

看起来它使用iris代替test ..这怎么可能?如何让biglm以我想要的方式使用chunk1?

1 个答案:

答案 0 :(得分:2)

我怀疑以下几行应该受到指责:

formula <- iris$Sepal.Length ~ iris$Sepal.Width

在公式中,您明确引用iris数据集。这将导致R在调用iris时尝试找到lm数据集,它在全局环境中找到(因为R&n的范围规则)。

在公式中,您通常不使用向量,而只使用列名:

formula <- Sepal.Length ~ Sepal.Width

这将确保公式仅包含列(或变量)名称,这些名称将在传递的数据lm中找到。因此,lm将使用test代替iris