【发布时间】:2017-07-19 23:30:03
【问题描述】:
我有一个这样的数据框
df <- data.frame(tiny = rep(letters[1:3], 20),
block = rnorm(60), tray = runif(60, min=0.4, max=2),
indent = sample(0.5:2.0, 60, replace = TRUE))
我嵌套了这个数据框
nm <- df%>%
group_by(tiny)%>%
nest()
然后写了这些函数
library(dplyr)
library(purrr)
library(tidyr)
model <- function(dfr, x, y){
lm(y~x, data = dfr)
}
model1 <- function(dfr){
lm(block~tray, data = dfr)
}
我想为所有小类运行这个模型,所以我做到了
nm%>%
mutate(
mod = data %>% map(model1)
)
上面的代码工作正常,但如果我想像在model1 函数中那样将变量作为参数提供,我会得到错误。这就是我的工作
nm%>%
mutate(mod = data %>% map(model(x=tray, y=block)))
我不断收到错误
Error in mode(x = tray, y = block) : unused argument (y = block)。
我还尝试使用ggplot2 绘制这些图
plot <- function(dfr, i){
dfr %>%
ggplot(., aes(x=tray, y=block))+
geom_point()+
xlab("Soil Properties")+ylab("Slope Coefficient")+
ggtitle(nm$tiny[i])
nm%>%
mutate(put = data %>% map(plot))
我的想法是,我希望 ggplot 为每个将要生成的图放置标题 a、b 和 c产生。
任何帮助将不胜感激。谢谢
【问题讨论】:
-
看起来不像
model1()被定义为接受任何参数 -
@PierreLafortune,它没有用。我收到了错误
Error: is.data.frame(.data) || is.list(.data) || is.environment(.data) is not TRUE -
有一天你们的孩子会停止尝试用管道传输所有内容
标签: r ggplot2 dplyr magrittr purrr