2017-07-23 79 views
1

我有一个相当大的数据集,我想创建该特定数据集的n个子集。我知道每个子集的起点和终点(每个子集的起点和终点分别位于称为“开始”和“结束”的两个不同向量中)。如何使用循环创建数据集的多个子集?

我可以通过输入手动创建一个子集:

Dataset_n < - 数据集[开始[N]:[n]结束,]

然而,由于需要创建许多不同的子集,这是一个相当乏味的过程。

有没有办法通过使用可能的循环自动化?

回答

1

我们可以使用Map从“开始”和“结束”的每个对应的元素创建序列中的list

lst <- Map(function(x, y) Dataset[x:y,], start, ends) 

打造“数据集”的子集或这是可以做到通过的“开始”,然后将序列循环子集基于所述索引子集和所述“数据集”

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], ] 
}