R语言:使用列名向量列表为列表内各data frame选取不同列
实现方案
你可以用purrr包的map2()函数同时遍历数据框列表和对应的列选择列表,配对处理每个数据框:
代码示例
# 加载依赖包 library(purrr) library(dplyr) selected_trials <- map2( .x = all_trials, .y = trials_to_select, .f = ~ select(.x, all_of(.y)) )
代码说明
map2()会按名称/位置配对两个输入列表的元素,逐个传入自定义函数处理.x代指当前遍历到的all_trials中的数据框,.y代指trials_to_select中对应要选取的列名向量all_of()是dplyr提供的安全校验函数,确保待选列确实存在于对应数据框中,避免静默错误
无dplyr替代方案
如果不想依赖dplyr,也可以用基础R的列选取语法实现:
selected_trials <- map2(all_trials, trials_to_select, ~ .x[, .y, drop = FALSE])
执行上述代码后得到的selected_trials和你给出的预期输出完全一致。
内容的提问来源于stack exchange,提问作者Polina B
相关产品推荐
相关产品推荐

