cpt*_*ptn 5 debugging for-loop r
我怎样才能找出错误发生的位置?
我有这样的双循环
companies <- # vector with all companies in my data.frame
dates <- # vector with all event dates in my data.frame
for(i in 1:length(companies)) {
events_k <- # some code that gives me events of one company at a time
for{j in 1:nrow(events_k)) {
# some code that gives me one event date at a time
results <- # some code that calculates stuff for that event date
}
mylist[[i]] <- results # store the results in a list
}
Run Code Online (Sandbox Code Playgroud)
在这段代码中我得到了一个错误(这就像max(i)中的错误......)内部循环完美地运行.因此,通过省略外部循环并手动输入公司ID,直到出现错误,我发现哪家公司出了问题.我的data.frame在一个向量中有字母,该特定公司的每日回报.
下一次:在R中是否有办法找出错误出现的WHERE(或此处为FOR WHICH COMPANY)?它可以节省很多时间!
我喜欢用的是:
options(error = recover)
Run Code Online (Sandbox Code Playgroud)
您只需在会话开始时运行一次(或将其添加到您的.Rprofile文件中)
之后,每次抛出错误时,您都会看到导致错误的函数调用堆栈。您可以选择这些调用中的任何一个,就像您在browser()模式下运行该命令一样:您将能够查看调用环境中的变量并浏览代码。
更多信息和示例请访问?recover。
如果没有明确的代码,我们很难知道我们可以运行,但我的猜测是,将代码更改为
for(i in companies) {
for(j in dates) {
Run Code Online (Sandbox Code Playgroud)
或者替代地
for(i in 1:length(companies)) {
for(j in 1:length(dates)) {
Run Code Online (Sandbox Code Playgroud)
可能会解决问题。注意(第二个循环中的 。如果没有,最好编辑您的示例以获取一些产生相同错误的代码/数据。
要找出它发生的位置,您始终可以print(i)在代码中合适的位置添加类似的内容。
| 归档时间: |
|
| 查看次数: |
529 次 |
| 最近记录: |