如何将嵌套列表转换为pmap可用格式及格式正确性验证
问题解答
1. 如何将before转换为after?
使用purrr::transpose()函数就能直接实现嵌套列表的层级翻转,完美适配你的需求。
举个具体代码示例:
假设你的before是按单次函数调用分组的嵌套列表(每个子列表包含传给my_func的3个tibble):
library(purrr) library(tibble) # 示例before结构 before <- list( list(tibble(x = 1:3), tibble(y = 4:6), tibble(z = 7:9)), list(tibble(x = 10:12), tibble(y = 13:15), tibble(z = 16:18)) ) # 转换为after结构 after <- transpose(before)
转换后的after会变成按函数参数分组的列表:每个元素对应my_func的一个参数,内部包含该参数的所有输入tibble。
2. after是否是用于pmap调用该函数的正确格式?
是的,这个格式完全符合pmap()的要求。
pmap()的.l参数需要是一个长度与函数参数数量一致的列表:列表的第n个元素,就是传给my_func第n个参数的所有输入值集合。当你调用pmap(after, my_func)时,pmap会自动按索引配对调用:
- 第一次执行:
my_func(after[[1]][[1]], after[[2]][[1]], after[[3]][[1]]) - 第二次执行:
my_func(after[[1]][[2]], after[[2]][[2]], after[[3]][[2]])
以此类推,完全匹配你的自定义绘图函数的参数需求。
内容的提问来源于stack exchange,提问作者Angelo
相关产品推荐
相关产品推荐

