当公式少于两个级别时,从公式中删除因子

时间:2016-07-15 18:28:46

标签: r

我希望能够根据一个因子是否少于2个级别从公式中删除一个术语。

我的设置是我想为不同的数据子集运行大量相同的logit模型。问题在于,对于某些子集,某些因素可能只占用1个值。

这是一个例子:

depvar <- sample(0:1, 100, replace=T)
bin1 <- rep(1, 100)
cont1 <- rnorm(100)
df <- data.frame(depvar=depvar, bin1=bin1, cont1=cont1)
formla <- as.formula("depvar ~ bin1 + cont1")
logit.reg <- glm(formla, data=df, family=binomial(link=logit))

我希望能够以某种方式自动从公式中删除bin1 当它只需要一个值时。

1 个答案:

答案 0 :(得分:1)

对我来说就像一个简单的if / else就足够了:

if(length(unique(df$bin)) > 1) {
  formla <- as.formula("depvar ~ bin1 + cont1")
} else {
  formla <- as.formula("depvar ~ cont1")
}

请注意, bin1 不是您示例中的一个因素(可以使用as.factor()将其强制转换为一个因素)