首页 > 解决方案 > R:如何使用成对的开始、结束行序列序列创建 data.table 的动态子集

问题描述

IE 根据行索引将数据表拆分为动态数量的可变块

我正在尝试按行索引将 data.table 拆分为块。

数据是动态的,块的数量可能会发生变化和大小变化。

例如:

MyDT 是一个 2675 行、98 列的数据表。

我已经确定对于这个数据集,我希望第 3-796、802-857、936-952 和 1206-2623 行作为它们自己的单独块,我可以调用/保存为单独的变量/等。

我希望脚本是动态的,不需要手动输入索引。我目前可以找到任何长度和数量的块,我只是无法将它们导出到一个干净的数组/列表中。即块 1 是 DAT[1] ,块 2 是 DAT[2] ,依此类推

[好奇的背景,我正在从一个仪器将数据导入 R,该仪器将来自多个实验的数据输出到一个“杂乱”的文本文件中。我将数字、矩阵形式的数据与其他杂乱的输出分开。有时我的数据文件包含来自 2 个实验、3、4 等的信息...]

标签: rdata.table

解决方案


如果我们想将它存储在 a 中list,请创建一个“开始”、“结束”向量序列,使用它来对 data.table 进行子集化Map

library(data.table)
start <- c(3, 802, 936, 1206)
end <- c(796, 857, 952, 2623)
lst_out <- Map(function(i, j) MyDT[i:j], start, end)

推荐阅读