循环中断时保存中间结果:我的R代码实现是否正确?
你的实现是正确的
你的代码逻辑完全没问题——每次循环迭代生成的结果都会实时存入list_results列表,只要循环执行过某一次迭代,对应的结果就已经被写入内存了。所以不管是主动中断循环(比如按Ctrl+C)还是因为错误意外停止,已经完成的那些循环产生的结果都会保留在list_results里,随时可以调用查看。
一点优化建议
当前的方式虽然可行,但如果后续需要对所有结果做统一分析,最后可以把列表里的小数据框合并成一个完整的数据框,操作更方便:
# 合并列表中的所有data.frame final_results <- do.call(rbind, list_results)
另外补充个小知识点:如果直接用rbind在循环里逐个添加行,循环次数多的时候(比如你这里的10万次)效率会很低,因为每次rbind都会复制整个数据框。你现在用列表先存储每个小结果,最后再合并的方式,是R里处理这类循环结果的高效做法,这点选得很对。
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

