获取 purrr::map 函数中迭代的名称
Get the name of iteration in purrr::map function
我正在根据 4 个子集 "virus" 变量的统计模型制作图表。我不知道如何根据 "virus" 变量放置图表的标题。
我做了这个可复制的集合:
library(dplyr)
library(tidyr)
library(lubridate)
library(mgcv)
library(purrr)
set.limpio <- data.frame(Codigo= 1:1000, Dia = rnorm(1000,100,2),
R = rbinom(1000,1,.5),
virus = c(rep("V1",250),
rep("V2",250),
rep("V3",250),
rep("V4",250)))
plots <- set.limpio %>%
filter(.$Dia < 250) %>%
split(.$virus) %>%
map(~ gam(R ~ s(Dia) + s(Codigo, bs = "re"), data = .,
family = binomial(link = "logit"), method = "REML")) %>%
map( ~ plot.gam(.,shade = T, scale = 0, scheme = 3,
xlab = "Days",
ylab = "Positivity"))
这部分应该是标题
map( ~ plot.gam(.,shade = T, scale = 0,scheme = 3,xlab = "Days", ylab =
"Positivity", main = "here should be the title"))
我试过了:
main = paste(names(.))
还有
deparse(substitute(obj))
但其中 none 有效。
这就是我想要的图表。那应该是剩下的四个图表中的第一个图表的结果。
正如 markus 评论的那样,您可以使用 imap
。
plots <- set.limpio %>%
filter(.$Dia < 250) %>%
split(.$virus) %>%
map(~ gam(R ~ s(Dia) + s(Codigo, bs="re"), data = .,
family = binomial(link = "logit"), method="REML")) %>%
imap( ~ plot.gam(.,shade = T, scale = 0,scheme = 3,xlab = "Days", ylab =
"Positivity", main= .y))
我刚刚用 imap
替换了第二个 map
调用并添加了参数 main = .y
如果目标只是显示绘图(plot.gam
不 return 绘图对象),那么您应该使用 iwalk
而不是将其分配给plots
使其静音。
见?imap
我正在根据 4 个子集 "virus" 变量的统计模型制作图表。我不知道如何根据 "virus" 变量放置图表的标题。
我做了这个可复制的集合:
library(dplyr)
library(tidyr)
library(lubridate)
library(mgcv)
library(purrr)
set.limpio <- data.frame(Codigo= 1:1000, Dia = rnorm(1000,100,2),
R = rbinom(1000,1,.5),
virus = c(rep("V1",250),
rep("V2",250),
rep("V3",250),
rep("V4",250)))
plots <- set.limpio %>%
filter(.$Dia < 250) %>%
split(.$virus) %>%
map(~ gam(R ~ s(Dia) + s(Codigo, bs = "re"), data = .,
family = binomial(link = "logit"), method = "REML")) %>%
map( ~ plot.gam(.,shade = T, scale = 0, scheme = 3,
xlab = "Days",
ylab = "Positivity"))
这部分应该是标题
map( ~ plot.gam(.,shade = T, scale = 0,scheme = 3,xlab = "Days", ylab =
"Positivity", main = "here should be the title"))
我试过了:
main = paste(names(.))
还有
deparse(substitute(obj))
但其中 none 有效。
这就是我想要的图表。那应该是剩下的四个图表中的第一个图表的结果。
正如 markus 评论的那样,您可以使用 imap
。
plots <- set.limpio %>%
filter(.$Dia < 250) %>%
split(.$virus) %>%
map(~ gam(R ~ s(Dia) + s(Codigo, bs="re"), data = .,
family = binomial(link = "logit"), method="REML")) %>%
imap( ~ plot.gam(.,shade = T, scale = 0,scheme = 3,xlab = "Days", ylab =
"Positivity", main= .y))
我刚刚用 imap
替换了第二个 map
调用并添加了参数 main = .y
如果目标只是显示绘图(plot.gam
不 return 绘图对象),那么您应该使用 iwalk
而不是将其分配给plots
使其静音。
见?imap