如何在R中按列名提取多list的指定列并合并为自定义列名的dataframe?
这里有两种简洁的方法可以实现你的需求,不管是用基础R还是tidyverse工具包都能轻松搞定:
方法一:基础R实现
不需要额外安装包,用sapply遍历列表提取指定列,再转换为数据框并设置列名:
# 提取所有列表中的"a"列 extracted_a_cols <- sapply(all, function(list_item) list_item[["a"]]) # 转换为data.frame并赋予新列名 final_df <- as.data.frame(extracted_a_cols) colnames(final_df) <- new_column_names
方法二:tidyverse工具包(更简洁)
如果习惯用tidyverse的语法,purrr的map_dfc可以直接按列合并提取结果,搭配dplyr的set_names一步到位:
library(purrr) library(dplyr) final_df <- map_dfc(all, ~ .x[["a"]]) %>% set_names(new_column_names)
验证结果
运行上述代码后,final_df就是你想要的结果:
> final_df Block1 Block2 Block3 1 1 12 2 2 2 13 3 3 3 14 4 4 4 15 5 5 5 16 6 6 6 17 7
如果之后需要提取其他列(比如"b"或"c"),只需要把代码中的"a"替换成对应的列名即可。
内容的提问来源于stack exchange,提问作者Adela Iliescu
相关产品推荐
相关产品推荐

