使用purrr的map2/walk2时,函数参数非前两位的处理方法咨询
关于purrr::walk2参数适配的最优实现方式
你的匿名函数写法完全合理,甚至是这类场景下的标准最优实现之一。
当walk2默认传递的.x/.y与目标函数的参数顺序、位置不匹配时,用匿名函数显式映射参数是最直观、可读性最高的方案,你的代码已经做到了简洁和清晰的平衡。
补充几种等价写法供参考:
- 用命名参数的匿名函数(更适合复杂场景或团队协作,可读性更强):
walk2(TCR_donor_cell, names(TCR_donor_cell), function(data, filename) { write_tsv(data, file = paste0("results/TCR/", filename, "_paired_chains.txt")) })
- 若尝试避免匿名函数,可用
purrr::partial包装,但会增加复杂度,不推荐:
write_tsv_with_prefix <- purrr::partial(write_tsv, file = ~ paste0("results/TCR/", .x, "_paired_chains.txt")) walk2(names(TCR_donor_cell), TCR_donor_cell, ~ write_tsv_with_prefix(.y, .x))
总结
你的原代码已经是最优选择,无需调整。如果追求更直白的参数命名,可以换成命名参数的匿名函数版本,两种写法都符合R tidyverse的最佳实践。
内容的提问来源于stack exchange,提问作者Lucy
相关产品推荐
相关产品推荐

