r - 在 purrr::map 函数中获取迭代的名称
问题描述
我正在从 4 个统计模型子集“病毒”变量中制作图表。我不知道如何根据“病毒”变量放置图表的标题。
我制作了这个可重现的集合:
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))
但他们都没有工作。
解决方案
正如马库斯所说,您可以使用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
推荐阅读
- javascript - 如何在通过 java 脚本添加的输入上使用 keyup 功能?
- r - 使用 R Base 从 read.csv2 读取的折线图的图例
- java - 电子邮件未在 @Async 注释方法中发送
- tensorflow - 当 LSTM 获得 2 个或更多数字特征时,它会做什么?
- r - 关于 dplyr 和 mutate 中的 map_chr() 函数的清晰性?
- angular - 基于复选框操作节点父子行为
- php - 如何在 Codeigniter 中使用 Jquery UploadHandler 更改构造以更改文件夹的名称
- javascript - 无法让 socket.io 正常运行
- operating-system - 每个系统调用的代码是否加载到每个进程的地址中?
- r - R中是否有一个函数可以聚合在某些列中具有相同值但在其他列中具有不同值的行?