r - 如何将长度不等的向量列表转换为数据框
问题描述
我需要将以下列表转换为数据框:
list(c(13, 5, 9, 16, 1, 7, 3, 20), c(0, 1, 2, 7, 8, 14, 20), c(2, 4, 7, 9, 12, 14, 16), 0:9, c(18, 19, 20, 21, 22, 23, 6, 7, 8, 9), c(0, 1, 7, 13, 19, 6, 12, 18, 2, 8), 23:22, c(18, 13, 8), c(18, 13, 8, 3, 10, 17, 12, 6, 0, 1), c(18, 14), c(18, 19, 20, 21, 13, 7, 8, 14, 2, 1), c(13, 15, 16, 9, 8, 7, 14, 20, 19, 18))
该列表具有以下结构:
List of 1
$ :List of 12
..$ : int [1:8] 13 5 9 16 1 7 3 20
..$ : int [1:7] 0 1 2 7 8 14 20
..$ : int [1:7] 2 4 7 9 12 14 16
..$ : int [1:10] 0 1 2 3 4 5 6 7 8 9
..$ : int [1:10] 18 19 20 21 22 23 6 7 8 9
..$ : int [1:10] 0 1 7 13 19 6 12 18 2 8
..$ : int [1:2] 23 22
..$ : int [1:3] 18 13 8
..$ : int [1:10] 18 13 8 3 10 17 12 6 0 1
..$ : int [1:2] 18 14
..$ : int [1:10] 18 19 20 21 13 7 8 14 2 1
..$ : int [1:10] 13 15 16 9 8 7 14 20 19 18
因为每个向量可以包含 12 个整数,所以我想将此列表转换为如下所示的数据框:
P01 P02 P03 P04 P05 P06 P07 P08 P09 P10 P11 P12
D01 13 5 9 16 1 7 3 20 NA NA NA NA
D02 0 1 2 7 8 14 20 NA NA NA NA NA
D03 2 4 7 9 12 14 16 NA NA NA NA NA
... and so on
非常感谢任何修复提示。
解决方案
假设您的列表列表已命名x
,您可以使用
sapply(1:12, function(i) sapply(x, `[`, i))
得到你想要的数据。在这里,我们迭代您要从每个向量中提取的不同索引。当您要求一个不存在的职位时,在 R 中就会发生这种情况,您会得到NA
. 您只需要使用您想要的任何值添加行/列名称。
推荐阅读
- java - 发送蓝色:发送带有附件的邮件到 sendinblue
- android - 如何在没有平面的情况下在相对于相机的相对位置创建对象?
- mysql - 当 SP 的实际代码在 10 分钟内直接执行时,为什么在超时开始之前存储过程永远不会返回?
- java - 项目单击侦听器不适用于自动滚动 Recyclerview
- php - 在为 cpt 创建自定义搜索时需要帮助
- node.js - 如何在 Dialogflow 的承诺中通知用户 POST 失败?
- sql-server - SqlException:“必须声明标量变量”在执行存储过程
- c# - 以前登录有效时,用户“ ”登录失败
- javascript - Cordova 文件插件无法删除文件
- c++ - Tensorflow Lite arm64 错误:无法转换'const int8x8_t?