【发布时间】:2014-07-28 17:34:44
【问题描述】:
我经常有这样的情况:
result <- lapply(1:length(mylist), function(x){
doSomething(x)
})
但是,如果它失败了,我不知道列表中的哪个元素在 doSomething() 上失败了。
所以我最终将它重新编码为一个 for 循环:
for(i in 1: length(mylist)){
doSomething(mylist[[i]])
}
然后我可以看到i 的最后一个值以及发生了什么。必须有更好的方法来做到这一点?谢谢!
【问题讨论】:
-
你试过运行
traceback()吗? -
或者在你的函数中使用
print(x)(非常慢) -
@nrussell:traceback 向我显示了失败的代码行,但它通常不会向我显示进入该代码行的可读格式的输入。
-
@Floo0: print(x) 确实会减慢执行速度并打印出一大堆乱七八糟的东西——尽管这会在紧要关头完成。
-
你能发布一个可重现的例子吗?我知道您正在寻找一个通用的解决方案,但是能够检查一个特定的实例并从那里进行概括会有所帮助。