首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将循环转换为基于向量的代码?

如何将循环转换为基于向量的代码?
EN

Stack Overflow用户
提问于 2019-04-09 08:57:51
回答 2查看 77关注 0票数 1

我需要将数据分割成N个部分,这些部分应该有一个给定的长度("proglen")。

我创建了一个for-循环,它给出了想要的结果,作为Dataframes的列表。现在,我想将for-循环更改为基于向量的代码

我不知道如何在R中将循环转换成基于向量的代码。

代码语言:javascript
复制
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“。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-09 09:11:00

这几乎类似于您所做的工作,只是被lapply所取代,并且有一点可读性。这将给出数据帧的列表。这也可以用递归函数来完成,但是很难理解(在我看来)。

代码语言:javascript
复制
lapply(1:N, function(idx){
  this_idx <- obslen + idx * proglen
  next_idx <- obslen + (idx + 1) * proglen
  df[this_idx:next_idx, ]
})
票数 0
EN

Stack Overflow用户

发布于 2019-04-09 09:22:53

如果日期不同,则始终可以使用split函数:

代码语言:javascript
复制
testdat <- split(df[obslen + seq(1, N * proglen), ], rep(seq(N), each = proglen))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55588855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档