过滤在 dplyr 中创建的模型表时出错

Error when filtering tables of models created in dplyr

我正在处理在 dplyr 中生成的模型列表

library(dplyr)
library(magrittr)

mod.list <- iris %>%
  group_by(Species) %>%
  do(mod = lm(Petal.Length ~ Petal.Width, data = .))

如果我绘制每个模型,一切都会按预期工作

par(mfrow = c(2,2))

mod.list %>%
  do(.$mod %>% plot)

但是如果我引入一个过滤器,我会得到一个错误

mod.list %>%
  filter(row_number() <= 1) %>%
  do(.$mod %>% plot)

Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' is a list, but does not have components 'x' and 'y'

我也尝试过另一种类型的过滤器,但错误是一样的

mod.list %>%
  filter(Species == "setosa") %>%
  do(.$mod %>% plot)

有人知道为什么会这样吗?

要调试,可以使用

mod.list %>%
  filter(row_number() <= 1) %>%
  do(.$mod  %>% (function(x) browser()))

然后你看到class(x)是一个list。你想要第一个(唯一的)元素,所以

mod.list %>%
  filter(row_number() <= 1) %>%
  do(.$mod  %>% `[[`(i=1) %>% plot)