Select 使用列名向量列表的列表中数据框的列

Select columns from data frames in a list using a column names vectors list

我有一个数据框列表:

all_trials <- list(data1 = data.frame(trial1 = 1:5,
                                      trial2 = 6:10,
                                      trial3 = 11:15,
                                      trial4 = 16:20),
                   data2 = data.frame(trial2 = 1:4,
                                      trial3 = 5:8,
                                      trial5 = 9:12))
    

以及我想从每个数据框中 select 的变量列表,最好是 purrr

trials_to_select <- list(data1 = c("trial1", "trial3", "trial4"),
                         data2 = c("trial2", "trial5"))

期望的输出:

selected_trials <- list(data1 = data.frame(trial1 = 1:5,
                                           trial3 = 11:15,
                                           trial4 = 16:20),
                        data2 = data.frame(trial2 = 1:4,
                                           trial5 = 9:12))

$data1
  trial1 trial3 trial4
1      1     11     16
2      2     12     17
3      3     13     18
4      4     14     19
5      5     15     20

$data2
  trial2 trial5
1      1      9
2      2     10
3      3     11
4      4     12

我找到了如何 ,但我需要 select 每个数据框中的不同列。

Map(`[`, all_trials, trials_to_select)

$data1
  trial1 trial3 trial4
1      1     11     16
2      2     12     17
3      3     13     18
4      4     14     19
5      5     15     20

$data2
  trial2 trial5
1      1      9
2      2     10
3      3     11
4      4     12

发出呼噜声:

purrr::map2(all_trials, trials_to_select, dplyr::select)
$data1
  trial1 trial3 trial4
1      1     11     16
2      2     12     17
3      3     13     18
4      4     14     19
5      5     15     20

$data2
  trial2 trial5
1      1      9
2      2     10
3      3     11
4      4     12