在 purrr::map 函数中获取迭代的名称

3

我正在使用四个统计模型的“病毒”变量生成图表。 我不知道如何根据“病毒”变量设置图表标题。

我创建了这个可重现的数据集:

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))

但是这些方法都没有奏效。

这就是我想要的图表。这应该是剩下的四个图表中第一个图表的结果。 enter image description here


3
尝试使用imap。请查看此帖子 - markus
1个回答

3

正如马库斯所评论的,您可以使用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))

我刚刚将第二个 map 调用更改为 imap 并添加了参数 main = .y

如果目标只是显示绘图(plot.gam 不返回绘图对象),那么您应该使用 iwalk,并且无需将其分配给 plots 使其静音。

请参见 ?imap


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接