繁体   English   中英

如何使用get()构造变量的复杂模型

[英]How to use get() to construct a complicated model of variables

我知道如何使用get()从变量快速构建模型,例如:

dvar="myResponse"
ivar="someIndependentVariable"
family="binomial"
myGLM <- glm(data=ds, get(dvar) ~ get(ivar),family=myFamily)

当然,这对于循环遍历变量列表非常方便-您可以在for()循环中向其提供一系列独立变量,并查看许多不同的模型。 我的问题是,我将如何使用get()eval()或一些类似的命令来创建更复杂的调用? 例如,假设我在列表中有两个自变量:

dvar="myResponse"
ivar=c("independentVar1","independentVar2")

最后,我想要的是:

myGLM<-glm(data=ds, myResponse ~ independentVar1 + independentVar2)

我知道我可以使用三个get()语句来做到这一点,因为我只有1个因变量和2个独立变量,但是对于n项独立变量列表,有没有一种通用的方法? 基本上,我要做的是逐步回归,但是我对caretMASS等中的任何现有选项都不满意。

您要?reformulate ...

dvar="myResponse"
ivar <- c("independentVar1","independentVar2")
form <- reformulate(ivar, response=dvar)
glm(form, myFamily = family_string, data= ...)

作为基本规则,

  • 使用reformulate()或直接操纵公式的解决方案(使用quote() substitute()as.symbol()as.symbol()等)比...更惯用/更安全/更可靠。
  • 基于字符串的解决方案( deparse() / as.formula() )比...
  • 具有[m]get()eval()等的解决方案...

(我实际上在这里在这个层次结构上作弊,因为reformulate()实际上是基于字符串的,但是由于它是一个内置函数...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM