R语言 每“X”秒保存一次循环的输出

scyqe7ek  于 2023-07-31  发布在  其他
关注(0)|答案(2)|浏览(100)

我想做一个循环,每“x”秒将循环的结果保存到您的计算机。例如,考虑以下循环:

my_list <- list()

for (i in 1:10000000) {
  a_i <- rnorm(1, 100, 100)
  my_list[[i]] <- a_i
  saveRDS(my_list, "my_list.RDS")
}

字符串
我想使它使“saveRDS”命令每33秒执行一次,从而覆盖文件的以前版本。
我知道“Sys.time()”函数可以用来记录R中的时间,“Sys.sleep()”可以用来暂停时间--但我不确定如何将这些函数一起使用来执行这项任务。
有人能教我怎么做吗?
谢谢你,谢谢

pn9klfpd

pn9klfpd1#

@ Jay.sf:我根据你的回答做了这个小调整,现在一切似乎都正常了!谢谢你!

my_list <- list()

for (i in 1:100000000000) {
 a_i = rnorm(1,100,100)
  tm <- Sys.time()
  my_list[[i]] <- a_i
  saveRDS(my_list, "my_list.RDS")
  Sys.sleep(5)  ## actually 33 secs
}

字符串

lymnna71

lymnna712#

如果你想让循环每隔x秒做一次,在最后设置Sys.sleep,即在下一次迭代开始之前。如果要做的“事情”需要很长时间,时间可能会变长。我的建议是:

my_list <- list()

for (i in 1:5) {
  tm <- Sys.time()
  ## do stuff
  my_list[[i]] <- tm
  saveRDS(my_list, "my_list.RDS")
  Sys.sleep(3)  ## actually 33 secs
}

readRDS("my_list.RDS")
# [[1]]
# [1] "2022-09-25 19:37:26 CEST"
# 
# [[2]]
# [1] "2022-09-25 19:37:29 CEST"
# 
# [[3]]
# [1] "2022-09-25 19:37:32 CEST"
# 
# [[4]]
# [1] "2022-09-25 19:37:35 CEST"
# 
# [[5]]
# [1] "2022-09-25 19:37:38 CEST"

字符串

相关问题