【发布时间】:2017-07-23 20:27:45
【问题描述】:
我有一个相当大的数据集,我想创建该特定数据集的 n 个子集。
我知道每个子集的起点和终点(每个子集的起点和终点位于两个不同的向量中,分别称为“起点”和“终点”)。
我可以通过输入手动创建一个子集:
Dataset_n
但是,由于我需要创建许多不同的子集,这是一个相当乏味的过程。
有没有办法通过使用循环来自动执行此操作?
【问题讨论】:
我有一个相当大的数据集,我想创建该特定数据集的 n 个子集。
我知道每个子集的起点和终点(每个子集的起点和终点位于两个不同的向量中,分别称为“起点”和“终点”)。
我可以通过输入手动创建一个子集:
Dataset_n
但是,由于我需要创建许多不同的子集,这是一个相当乏味的过程。
有没有办法通过使用循环来自动执行此操作?
【问题讨论】:
我们可以使用Map从'start'和'end'的每个对应元素创建序列,以在list中创建'Dataset'的子集
lst <- Map(function(x, y) Dataset[x:y,], start, ends)
或者这可以通过循环'start'的序列来完成,然后根据索引和子集'Dataset'进行子集
lst <- lapply(seq_along(start), function(i) Dataset[start[i]:ends[i],])
或者这可以通过 for 循环通过初始化 list 然后将子集分配给 list 元素来完成
lst <- vector("list", length(start))
for(i in seq_along(start)) {
lst[[i]] <- Dataset[start[i]:ends[i], ]
}
【讨论】: