我有一个预先分配的列表,我在我的代码中使用:
slopeList <- vector('list',20)
当我在Rconsole中复制/粘贴代码时,我注意到我可以添加更多代码 然后分配记录,没有任何错误或警告。
for (i in (200:220)) slopeList[[i]]<- 0
运行时没有错误也没有警告。在相反的情况下手动输入以下行:
slopeList[[230]]
Error in slopeList[[230]] : subscript out of bounds
所以FOR循环可能会造成内存泄漏。
我是否可以在程序中设置一个标志来生成警告或错误,即使循环访问该列表也是如此?
答案 0 :(得分:0)
行为差异的原因是你的for
循环内部正在调用函数`[[<-`
(它支持分配索引的长度超过列表初始化的长度)而在循环你调用`[[`
(抛出错误,因为该元素不存在)。
当发生此类行为时,有很多方法可以抛出错误或警告,例如,您可以实现自己的方法来处理属于某个&#34;类的变量&#34;以不同方式处理作业。最简单的方法是确保在循环中引用slopeList
,例如for (i in seq_along(slopeList)) {...}
永远不会超过列表的长度