如何为大量变量运行 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,假设YX 对应于称为ffdfffdf 对象的colnamesdata

如果我想将 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 &lt;- bigglm(V1~.,data=together) 给出了错误。如果我运行z &lt;- 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 创建X1X200。下一个粘贴将结果向量折叠成一个字符串,其中第一个 paste 的元素与 + 放在一起。最后一个paste 添加到Y ~。最后,我把它从字符串改成了公式。

【讨论】:

以上是关于如何为大量变量运行 bigglm 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何为同一个类对象的成员函数保留单独的变量副本?

如何为运行脚本设置自定义环境变量

如何为运行时计算的变量高度设置布局约束?

如何为变量赋值并在while循环中检查其值?

如何为模态对话框中呈现的对象运行观察函数?

Go:如何为多个包运行测试?