首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对比度错误: group by factor和` `formula()`中的减号运算符停止工作

对比度错误: group by factor和` `formula()`中的减号运算符停止工作
EN

Stack Overflow用户
提问于 2019-02-22 06:36:56
回答 1查看 38关注 0票数 0

在因子上使用group_by()时会出现错误,即使此因子后来为removed from the model using the minus operator (-)也是如此。我的鼓舞人心的例子:

代码语言:javascript
复制
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,我会得到同样的错误:

代码语言:javascript
复制
fit_am0 = df %>% 
  filter(am == 0) %>%
  lm(formula(mpg ~ . - am), .) # Returns the error

这就好像当我试图删除的变量是一个因子时,formula()函数不能正确地检测减号运算符(- am)。这是我的猜测,因为下面的例子没有错误:

代码语言:javascript
复制
fits = mtcars %>% # `am` is numeric
  group_by(am) %>%
  do(fit = lm(formula(mpg ~ . - am), .)) # No error
代码语言:javascript
复制
fit_am0 = df %>%
  filter(am == 0) %>%
  select(-am) %>% # `am` removed prior to running model
  lm(formula(mpg ~ .), .) # No error
代码语言:javascript
复制
fits2 = mtcars %>% 
  mutate(vs = factor(vs)) %>% # A non-grouped factor, later removed
  group_by(am) %>%
  do(fit = lm(formula(mpg ~ . - vs), .)) # No error

这是一个bug吗?还是我在激励别人的例子中犯了一个错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-22 07:02:12

我找到了一个解决方案。删除数据选项中的因子,而不是公式选项中的因子,即lm(formula = formula(mpg ~ .), data = select(., -am))

代码语言:javascript
复制
library(tidyverse)
df = mtcars %>% mutate(am = factor(am))
fits = df %>%
  group_by(am) %>%
  do(fit = lm(
    formula(mpg ~ .), 
    select(., -am)
  )) # No error
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54817329

复制
相关文章

相似问题

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