如何使用循环创建数据集的多个子集?

时间:2017-07-23 20:27:46

标签: r loops dataframe

我有一个相当大的数据集,我想创建该特定数据集的n个子集。

我知道每个子集的起点和终点(每个子集的起点和终点分别位于两个不同的矢量中,分别称为“开始”和“结束”)。

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

Dataset_n< - 数据集[start [n]:ends [n],]

但是,由于我需要创建许多不同的子集,这是一个相当繁琐的过程。

有没有办法通过使用循环来实现自动化?

1 个答案:

答案 0 :(得分:1)

我们可以使用Map从' start'的每个对应元素创建序列。并且'结束'创建数据集'的子集在list

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

或者这可以通过循环开始&#39;开始&#39;然后根据索引和子集“数据集&#39;

来完成。
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], ]
 }