首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缩短R- revoScaleR rxGLM()中函数调用的长度

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

Stack Overflow用户
提问于 2018-12-16 08:56:39
回答 1查看 70关注 0票数 3

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

我将所有的函数调用都保存在一个R脚本中,以便以后可以复制我的工作--审计跟踪等等。

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

代码语言:javascript
复制
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行代码,但我还没有完成!

谢谢。艾伦

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-16 11:44:25

有两个案子。如果您正在使用myDataFrame中的所有变量,那么只需编写

代码语言:javascript
复制
rxGlm(Dependent.Variable ~ .,
      family = tweedie(var.power = 1.5, link.power = 0),
      data = myDataFrame, pweights = "Weight.Variable")

整个模型,然后,比如说,

代码语言:javascript
复制
rxGlm(Dependent.Variable ~ . - Factor13,
      family = tweedie(var.power = 1.5, link.power = 0),
      data = myDataFrame, pweights = "Weight.Variable")

放弃Factor13

如果您没有使用所有变量,那么您可以保存完整的公式,比如说,

代码语言:javascript
复制
frml <- y ~ Factor1 + Factor2 + Facto3

然后使用update

代码语言:javascript
复制
update(frml, ~ . - Factor3)
# y ~ Factor1 + Factor2

不过,请注意,在本例中,.的意思是“与frml中相同的右侧”,而不是“前一个选项中的所有变量”。

另外,如果是后一种选择,则可以方便地使用pasteformula构建完整的公式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53800751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档