缩短R中函数调用的长度-revoScaleR rxGLM()

时间:2018-12-16 08:56:40

标签: r glm revoscaler

目前,我正在使用R在大数据集上创建一些GLM模型。由于它的大小,我在revoScaleR包中使用了rxGlm()函数-它的运行速度比基本的glm()函数快得多。

我将所有函数调用都保留在R脚本中,以便以后可以重现我的工作-审计跟踪等。

我的函数调用很长,因为我有很多因素(〜50)。它们都看起来像这样:

rxGlm_C <- rxGlm(Dependent.Variable ~
               1 +
               Factor 1 +
               Factor 2 +
               Factor 3 +
                     ...........
               Factor N,
             family = tweedie(var.power = 1.5, link.power = 0),
             data = myDataFrame,
             pweights = "Weight.Variable",
)

如果此后,我想重新运行模型拟合,但可能只是对公式进行了少许更改(通常一次删除一个因素),对此是否有任何简写形式?目前,我正在将函数调用复制并粘贴到脚本文件中,并手动删除单行。而是有某种语法表示:

“请使用与上次完全相同的GLM,但要删除因子13”?

这会使我的脚本文件短很多。目前,我那里有大约3,000行代码,但我还没有完成!

谢谢。 艾伦

1 个答案:

答案 0 :(得分:1)

有两种情况。如果您使用的是myDataFrame中的所有变量,那么您可以简单地编写

rxGlm(Dependent.Variable ~ .,
      family = tweedie(var.power = 1.5, link.power = 0),
      data = myDataFrame, pweights = "Weight.Variable")

完整模型,然后说

rxGlm(Dependent.Variable ~ . - Factor13,
      family = tweedie(var.power = 1.5, link.power = 0),
      data = myDataFrame, pweights = "Weight.Variable")

删除Factor13

如果未使用所有变量,则可以保存完整公式,例如,

frml <- y ~ Factor1 + Factor2 + Facto3

然后使用update

update(frml, ~ . - Factor3)
# y ~ Factor1 + Factor2

但是请注意,在这种情况下,.的含义是“与frml相同的右侧”,而不是前一个选项中的“所有变量”。

此外,如果选择后者,则可以方便地使用pasteformula构造完整公式。