我的数据集是:
mydata <- data.frame(
x1= as.factor(1:3),
x2= as.factor (4:6),
x3= as.factor(7:9),
x4= as.factor (2:7),
x5= as.factor(1:6),
x6= as.numeric(1:18),
x7= as.numeric(18:35)
)
我想在 x6 和 x7 上做一个样条曲线,但在我对 x1、x2、x3、x4、x5 进行分组之前,我会:
mydata1 <- mydata%>%
nest(-(x1:x5))%>%
mutate(fit = map(data, ~spline(.$x6,.$x7)))
现在我想使用 broom::augment,但 spline 是一个列表。另一个问题是我想做一个情节(用ggplot2):
ggplot(data= mydata%>%, aes(x = x6, y = x7))+
geom_line(aes(color = x1, linetype = x2))+
geom_line(data= mydata1$fit, aes(x= .$x, y= .$y,color = x1,linetype = x2))+
facet_grid(x3~x4, scales = "free")
但给我一个错误:“错误:ggplot2 不知道如何处理类列表的数据”,因为 ggplot 想要一个数据框而不是列表。有没有适合作为数据框或在列表中使用扩充的方法?如果我可以使用增强,我可以这样做:
mydata1 <- mydata%>%
nest(-(x1:x5))%>%
mutate(fit = map(data, ~spline(.$x6,.$x7)),
result = map(fit, augment))%>%
unnest(result)
所以我已经 .fitted 了一个数据框,我可以使用 ggplot。