首页 > 解决方案 > 将数据帧拆分为具有不等长度向量的列表

问题描述

假设我有一个像这样的 10 行 5 列的数据框

df <- data.frame(matrix(rep(1:10, 5), ncol=5))

我想将数据框拆分为一个包含 5 个长度不等的向量的列表,其中第一个向量从第一列的第一行开始,第二个向量从第二列的第二行开始,依此类推。我将提供每个向量应结束的索引。例如,如果这个索引向量是,c(3, 5, 4, 8, 10)那么我希望列表是list(1:3, 2:5, 3:4, 4:8, 5:10). 谢谢!

标签: rlistdataframesplit

解决方案


Map(function(x, a, b) x[a:b], df, seq_along(df), c(3, 5, 4, 8, 10))
# $X1
# [1] 1 2 3
# $X2
# [1] 2 3 4 5
# $X3
# [1] 3 4
# $X4
# [1] 4 5 6 7 8
# $X5
# [1]  5  6  7  8  9 10

推荐阅读