我有一个列表'lst'的大列表,我想把列表中的第一条记录拉到一个数据框中.我怎么能做到呢.

我想使用循环来拉取记录,但却被困在如何将记录堆叠成一个pdf coll.我有如下代码:

for(i in 1:length(lst)) {
   df[i] <- lst[[i]][[1]][1]
}

电流输出不是我想要的.我需要df$record个存储lst[[i]][[1]][1]个.创建这样的数据框架是一个聪明的吗?

示例lst可以使用以下代码创建:

lst<- list(list(c("Class A", "86", "Missing")),
     list(c("Class B", "76", "Delay")),
     list(c("Class A", "88", "Missing")),
     list(c("Class D", "Missing", "56")))

推荐答案

Base R解决方案

您可以使用c()索引多个级别,即

# They are both "Class A"
lst[[1]][[1]][1] == lst[[c(1,1,1)]]

因此,要提取每个子列表的第一个向量的第一个元素,我们可以这样做:

data.frame(
    record = vapply(lst, \(l) l[[c(1,1)]], character(1))
)
#    record
# 1 Class A
# 2 Class B
# 3 Class A
# 4 Class D

tidyverse solution

如果你想要一个tidyverse解决方案,你也可以使用purrr::pluck(),并提供一个访问函数来提取第一个元素:

library(purrr)
map_chr(
    lst, 
    \(l) pluck(l, 1, \(x) x[1])
)  |>
    dplyr::as_tibble()  |>
    set_names("record")

# # A tibble: 4 × 1
#   record 
#   <chr>  
# 1 Class A
# 2 Class B
# 3 Class A
# 4 Class D

R相关问答推荐

R中的枢轴/转置

提取R中值和列名的所有可能组合

r—绘制相交曲线

使用strsplit()将向量操作为数据框

单个轮廓重叠条的单独图例

将包含卷的底部25%的组拆分为2行

try 将 colored颜色 编码添加到ggploly的标题中

计算两列中满足特定条件连续行之间的平均值

如何在PackageStatus()中列出&q;不可用的包&q;?

如何在使用箭头R包(箭头::OPEN_DATASSET)和dplyr谓词时编写具有整齐计算的函数?

来自程序包AFEX和amp;的类/函数和NICE_TABLE&冲突

防止在更新SHINY中的Reactive Value的部分内容时触发依赖事件

我是否可以使用多个变异项来构建顺序列(标记多个问题)

创建在文本字符串中发现两个不同关键字的实例的数据框

ggplot斜体轴刻度标签中的单个字符-以前的帖子建议不工作

注释不会绘制在所有ggplot2面上

生存时间序列的逻辑检验

隐藏基于 case 总数的值

将仪表板中的值框大小更改为Quarto

汇总数据:在跨越()all_of()Dynamic_list_of_vars=>;所选内容不能有缺失值的汇总()中出错