如何在R语言中提取列表内各向量的首个元素生成新列表?
提取列表中每个向量的首个元素生成新列表
针对你给出的data_list,这里有几种简单直接的方法得到目标的end_result:
方法1:基础R的sapply函数
先用sapply提取每个向量的第一个元素,得到一个字符向量,再用list()把它包装成列表:
data_list <- list(c("hello","world"), c("goodbye","everyone")) # 提取首个元素并生成目标列表 end_result <- list(sapply(data_list, `[`, 1))
sapply(data_list, [, 1)的作用是对列表里的每个向量,执行取第1个元素的操作,最后返回一个向量,外层套list()就得到了你要的结构。
方法2:用purrr包(tidyverse风格)
如果你习惯用tidyverse工具,可以用purrr::map_chr提取所有首个元素,再转成列表:
library(purrr) end_result <- list(map_chr(data_list, 1))
map_chr会遍历列表,返回一个字符向量,同样用list()包装就符合要求。
方法3:基础循环(直观易懂)
如果想更清楚看到每一步的操作,用循环也可以:
# 初始化一个空向量 first_elements <- c() # 遍历列表每个元素 for (vec in data_list) { first_elements <- c(first_elements, vec[1]) } # 转成目标列表 end_result <- list(first_elements)
内容的提问来源于stack exchange,提问作者Basil
相关产品推荐
相关产品推荐

