在因子上使用group_by()
时会出现错误,即使此因子后来为removed from the model using the minus operator (-
)也是如此。我的鼓舞人心的例子:
library(tidyverse)
df = mtcars %>% mutate(am = factor(am))
fits = df %>%
group_by(am) %>%
do(fit = lm(formula(mpg ~ . - am), .)) # Returns the error
这将给出以下错误消息:
contrasts<-
(_tmp_
,
= contr.funs[1 + isOFnn])中的值错误:对比只能应用于具有2个或更多级别的因子
如果我使用filter()
代替group,我会得到同样的错误:
fit_am0 = df %>%
filter(am == 0) %>%
lm(formula(mpg ~ . - am), .) # Returns the error
这就好像当我试图删除的变量是一个因子时,formula()
函数不能正确地检测减号运算符(- am
)。这是我的猜测,因为下面的例子没有错误:
fits = mtcars %>% # `am` is numeric
group_by(am) %>%
do(fit = lm(formula(mpg ~ . - am), .)) # No error
fit_am0 = df %>%
filter(am == 0) %>%
select(-am) %>% # `am` removed prior to running model
lm(formula(mpg ~ .), .) # No error
fits2 = mtcars %>%
mutate(vs = factor(vs)) %>% # A non-grouped factor, later removed
group_by(am) %>%
do(fit = lm(formula(mpg ~ . - vs), .)) # No error
这是一个bug吗?还是我在激励别人的例子中犯了一个错误?
https://stackoverflow.com/questions/54817329
复制相似问题