我需要将数据分割成N个部分,这些部分应该有一个给定的长度("proglen")。
我创建了一个for-循环,它给出了想要的结果,作为Dataframes的列表。现在,我想将for-循环更改为基于向量的代码。
我不知道如何在R中将循环转换成基于向量的代码。
obslen = 600 ;proglen = 50 ; N = 50 ; testdat <- list()
for (i in 1:N){
test <- df[df$d >= df$d[obslen + i * proglen] &
df$d < df$d[proglen + obslen +i * proglen],]
testdat[[i]] <- test
}变量$d的类型为Po-6$d。结果应该包含N个Dataframes。这些dfs从obslen +i* proglen开始,长度为"proglen“。
发布于 2019-04-09 09:11:00
这几乎类似于您所做的工作,只是被lapply所取代,并且有一点可读性。这将给出数据帧的列表。这也可以用递归函数来完成,但是很难理解(在我看来)。
lapply(1:N, function(idx){
this_idx <- obslen + idx * proglen
next_idx <- obslen + (idx + 1) * proglen
df[this_idx:next_idx, ]
})发布于 2019-04-09 09:22:53
如果日期不同,则始终可以使用split函数:
testdat <- split(df[obslen + seq(1, N * proglen), ], rep(seq(N), each = proglen))https://stackoverflow.com/questions/55588855
复制相似问题