如何从嵌套列表结构的数据框中提取指定列?
解决方案
你的数据是两层嵌套列表(每个外层列表元素里还包着一层含数据框的子列表),只需要在lapply的操作中先取出子列表里的数据框,再提取指定列即可:
# 你的嵌套列表数据 l = list(list(mtcars), list(mtcars)) # 要提取的列名向量 my_names = c("mpg", "wt", "am") # 调整后的提取代码 result = lapply(l, function(x) x[[1]][, my_names])
代码说明
x[[1]]:从每个外层列表元素(子列表)中取出唯一的那个数据框(因为你的子列表里只有mtcars这一个元素)[, my_names]:对取出的数据框执行原方案的列提取操作,按名称筛选指定列
如果你的子列表里有多个数据框,需要批量处理的话,可以用两层lapply:
# 假设子列表有多个数据框的情况 l_multi = list(list(mtcars, mtcars), list(mtcars)) result_multi = lapply(l_multi, function(sub_list) { lapply(sub_list, "[", , my_names) })
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

