for循环创建数据帧,这些数据帧是另一个数据帧的子集

时间:2020-01-14 12:32:47

标签: r dataframe for-loop subset

我正在尝试创建一个for循环,以创建原始数据的子集

现在,我按如下所示创建子集:

Dataset_1 <- subset(Dataset1, compliance>=0)    
Dataset_2 <- subset(Dataset1, compliance>=5) 
Dataset_3 <- subset(Dataset1, compliance>=10)
Dataset_4 <- subset(Dataset1, compliance>=15)
Dataset_5 <- subset(Dataset1, compliance>=20)
Dataset_6 <- subset(Dataset1, compliance>=25)

但是,我想使用一个for循环来做到这一点,并认为这样的事情可能会起作用:

Dataset_ = {}
for (i in 1:6){
  Dataset_[[i]] = subset(Dataset1, compliance>=(0+(i-1)*5))
}

执行此操作时,会得到一个包含数据帧的列表。但是,我想知道是否有一种方法可以编写for循环,以使数据帧不放在列表中,而是制成单个数据帧。原因:我想将以.Rdata文件创建的数据帧保存在文件夹中,例如:

save(Dataset_2, file = "Hypothesis1/Dataset1.RData")
save(Dataset_3, file = "Hypothesis1/Dataset2.RData")
save(Dataset_4, file = "Hypothesis1/Dataset3.RData")

1 个答案:

答案 0 :(得分:0)

您无需创建列表。您可以按照以下步骤在for循环中直接将文件直接写入磁盘:

for (i in seq(6)) {

  save(subset(Dataset1, compliance >= (0 + (i-1) * 5)),
       file = sprintf("Hypothesis1/Dataset%s.RData", i))

}