如何为大量变量运行 bigglm 函数
Posted
技术标签:
【中文标题】如何为大量变量运行 bigglm 函数【英文标题】:How to run bigglm function for large number of variables 【发布时间】:2013-11-11 15:06:00 【问题描述】:在ffbase
(http://cran.r-project.org/web/packages/ffbase/ffbase.pdf) 中有bigglm
函数:
bigglm.ffdf(formula, data, family = gaussian(), ...,
其中formula
类似于Y~X
,假设Y
和X
对应于称为ffdf
的ffdf
对象的colnames
data
。
如果我想将 data
中的 200 列放在等式的 RHS 上怎么办?显然我不能输入Y~X1+X2+....+X200
。
如何运行Y~X1+X2+....+X200
而不在 RHS 上输入所有 200 个变量?
【问题讨论】:
【参考方案1】:.
符号是正常的字符,但不确定它是否适用于 ffbase
。即
m <- lm(y ~ ., df)
将在df
中的所有其他列中描述y
。
正如 Chris 所述,这似乎是 biglm
中的一个错误,可以通过以下方式解决:
m <- bigglm(terms(y ~ ., data=df), data=df)
但这应该作为一个错误报告给biglm
的作者。
【讨论】:
很遗憾不起作用Error in terms.formula(formula) : '.' in formula and no 'data' argument
我会尝试给它一个 data
参数,即你想从哪个大数据框中获取“其他”列
我运行z <- bigglm(V1~.,data=together)
给出了错误。如果我运行z <- bigglm(V1~V2,data=together)
,其中V2
是列名之一,那么它将起作用。
刚刚尝试安装软件包,并得到相同的...假设它不支持这种语法,真烦人。试试@Christopher 的方法。
@SamMason:我很好奇为什么没有Y ~ .
所以我查看了源代码。原来,ffbase的作者在写bigglm
函数时,并没有将data
参数传递给terms
函数。【参考方案2】:
如果山姆的答案不起作用,您可以构建一个表示公式的字符串,然后将其转换为公式:
formula <- as.formula(paste('Y', paste(paste('',
paste('X', 1:200, sep = ''), sep = '', collapse = ' + ')), sep = ' ~ '))
内部paste
创建X1
到X200
。下一个粘贴将结果向量折叠成一个字符串,其中第一个 paste
的元素与 + 放在一起。最后一个paste
添加到Y ~
。最后,我把它从字符串改成了公式。
【讨论】:
以上是关于如何为大量变量运行 bigglm 函数的主要内容,如果未能解决你的问题,请参考以下文章