如何将单列tibble列表转换为向量列表并保留列表名称
将单列tibble列表转换为向量列表(保留元素名称)
可以通过以下几种简洁方法实现需求,同时完整保留原列表的元素名称:
示例数据
先定义你的输入数据(注意:避免用list作为变量名,会覆盖R内置函数list(),这里改为my_list):
library(tibble) a_tibble <- tibble(id = c('AB', 'DRR', 'FH', 'yyb')) another_tibble <- tibble(id = c('AB', 'DXF', 'FH', 'DKH')) my_list <- list( list1 = a_tibble, list2 = another_tibble, list3 = a_tibble, list4 = another_tibble)
解决方案1:Base R 实现
用lapply()遍历列表,通过[[1]]提取每个单列tibble的唯一列作为向量,lapply会自动保留原列表的元素名称:
result <- lapply(my_list, function(x) x[[1]])
解决方案2:tidyverse/purrr 实现
如果你习惯使用tidyverse工具,purrr::map()同样能满足需求:
library(purrr) # 方式1:通过[[1]]提取列 result <- map(my_list, ~ .x[[1]]) # 方式2:用pull()提取(单列场景下无需指定列名) result <- map(my_list, pull)
验证结果
查看转换后的结构,与预期完全一致:
str(result) # List of 4 # $ list1: chr [1:4] "AB" "DRR" "FH" "yyb" # $ list2: chr [1:4] "AB" "DXF" "FH" "DKH" # $ list3: chr [1:4] "AB" "DRR" "FH" "yyb" # $ list4: chr [1:4] "AB" "DXF" "FH" "DKH"
内容的提问来源于stack exchange,提问作者Sebastian Hesse
相关产品推荐
相关产品推荐

