r - for循环中时间限制后返回结果
问题描述
我在 R 中有一个 for 循环遍历数据框。数据帧的每一行都会在 for 循环中的所有操作中产生不同的结果。循环很长,因此我希望对 for 循环有时间限制,当时间到期时,它应该返回在时间限制下它能够计算的所有结果。
我在 R.utils 中尝试了一些函数,但在达到时间限制后它们没有返回结果。
解决方案
如果期望的时间已经过去,您可以显式定义一个 return 语句:
df <- data.frame(x=seq(1, 10000, 1), y=rnorm(10000,0, 1))
end.time <- Sys.time()+5
rowsum <- list()
for (i in 1:nrow(df)){
if (Sys.time()<end.time){
Sys.sleep(1)
rowsum[[i]] <- sum(df[i,])
} else {
return(rowsum)
}
}
dim(do.call("rbind", rowsum))
[1] 5 1
重要的元素是带有 return 语句的 if-else 条件。您可以将条件设置为您喜欢的任何时间窗口。
一些旁注:我设置了一个 sys.sleep 命令来防止循环在时间之前完成,所以你不需要那个。我还将输出保存在列表而不是数据框中,这也是一个偏好问题。
推荐阅读
- python - MongoDB Compass 中的 UTC 日期不正确
- node.js - Heroku - 构建错误 - 找不到模块请求
- c++ - sync() 调用是否会阻止所有 write()/read()/fwrite()/... 调用?
- javascript - 如何将日期选择器添加到内容可编辑的 td?
- listview - 自定义 ListView 无法从列表中删除项目
- python - 如何使用 Peewee 从 DateTime 中选择不同的年份
- python-3.x - 检查电子邮件收件箱是否为空(imaplib,python3)
- elasticsearch - Elastic 仅保留来自 logstash 的最后一条记录
- excel - Excel VBA自动切换活动工作表,无需说明
- sql - 如何在此查询中获取行号