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

时间:2015-01-14 15:35:05

标签: r 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)

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:1)

要进行调试,您可以使用

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)