我正在尝试创建数据集的块来运行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?
答案 0 :(得分:2)
我怀疑以下几行应该受到指责:
formula <- iris$Sepal.Length ~ iris$Sepal.Width
在公式中,您明确引用iris
数据集。这将导致R在调用iris
时尝试找到lm
数据集,它在全局环境中找到(因为R&n的范围规则)。
在公式中,您通常不使用向量,而只使用列名:
formula <- Sepal.Length ~ Sepal.Width
这将确保公式仅包含列(或变量)名称,这些名称将在传递的数据lm
中找到。因此,lm
将使用test
代替iris
。