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

biglm finds the wrong data.frame to take the data from

我正在尝试将我的数据集创建到 运行 biglm。 (使用 fastLm 我需要 350Gb 的内存)

我的完整数据集称为 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 行。然而,当 运行ning biglm 它显示样本量为 150

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

看起来它使用 iris 而不是 test.. 这怎么可能,我如何让 biglm 按照我想要的方式使用 chunk1?

我怀疑是下面这行造成的:

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

您在公式中明确引用了 iris 数据集。这将导致 R 在调用 lm 时尝试查找 iris 数据集,它在全局环境中找到(由于 R 的作用域规则)。

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

formula <- Sepal.Length ~ Sepal.Width

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