r - 缩短 R 中函数调用的长度 - revoScaleR rxGLM()
问题描述
我目前正在使用 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 行代码,我还没有完成!
谢谢。艾伦
解决方案
有两种情况。如果您使用来自 的所有变量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
”,而不是前一个选项中的“所有变量”。
此外,如果是后一种选择,您可以方便地使用paste
和构造完整的公式formula
。
推荐阅读
- php - PHP 变量的媒体查询
- c++ - C ++用fstream替换二进制文件中的数据
- android - 未应用使用注释的改造拦截器的 OkHttp 调用超时
- swift - UITextField 返回按钮的默认行为是什么?
- java - Spring boot 2.0.6 石英缺少 org/springframework/scheduling/quartz/SpringBeanJobFactory in war
- objective-c - 如何在不知道要为该指针分配的大小的情况下将指针参数传递给函数
- javascript - 使用 Spring 后端和 React 前端识别独特的浏览器
- ios - 在 UICollectionView 中定义单元格时获得 nil
- javascript - 在地图功能中重用反应组件
- c# - 处理两个不同的应用程序流