我正在使用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)
有谁知道为什么会这样?
答案 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)