我有一个相当大的数据集,我想创建该特定数据集的n个子集。
我知道每个子集的起点和终点(每个子集的起点和终点分别位于两个不同的矢量中,分别称为“开始”和“结束”)。
我可以通过输入手动创建子集:
Dataset_n< - 数据集[start [n]:ends [n],]
但是,由于我需要创建许多不同的子集,这是一个相当繁琐的过程。
有没有办法通过使用循环来实现自动化?
答案 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], ]
}