过滤在 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)
我正在处理在 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)