debugging R:运行调试源时fBody[[i]]出错

tyg4sfes  于 2023-01-21  发布在  其他
关注(0)|答案(4)|浏览(193)

我有一个大约1400行的R脚本。我最近开始收到以下错误信息。我可以通过突出显示并使用ctrl-R运行脚本,但我不能在调试模式下运行脚本。关于如何定位错误,有什么建议吗?

> debugSource('~/working/R/h60_maintenance/do_mega_analysis.R')
Error in fBody[[i]] : subscript out of bounds
> options(error=recover)
> debugSource('~/working/R/h60_maintenance/do_mega_analysis.R')
Error in fBody[[i]] : subscript out of bounds
Enter a frame number, or 0 to exit   
 1: debugSource("~/working/R/h60_maintenance/do_mega_analysis.R")
 2: (function (fileName, encoding, breaklines) 
{
    env <- new.env(parent = emptyenv())
    env$fun <- 
 3: suppressWarnings(.rs.setFunctionBreakpoints("fun", env, lapply(steps, function(step) {
    step$at
}
 4: withCallingHandlers(expr, warning = function(w) invokeRestart("muffleWarning"))
 5: .rs.setFunctionBreakpoints("fun", env, lapply(steps, function(step) {
    step$at
}))
 6: suppressMessages(trace(what = functionName, where = envir, at = lapply(strsplit(as.character(steps
 7: withCallingHandlers(expr, message = function(c) invokeRestart("muffleMessage"))
 8: trace(what = functionName, where = envir, at = lapply(strsplit(as.character(steps), ","), as.numer
 9: eval.parent(call)
10: eval(expr, p)
11: eval(expr, envir, enclos)
12: methods::.TraceWithMethods(what = functionName, where = <environment>, at = lapply(strsplit(as.cha
13: new(traceClass, def = if (doEdit) def else original, tracer = tracer, exit = exit, at = at, print 
14: initialize(value, ...)
15: initialize(value, ...)
16: .initTraceable(.Object, ...)
17: .makeTracedFunction(def, tracer, exit, at, print, doEdit)

错误可能与以下行有关,因为这些行与选项10关联:eval(表达式,p)。

imds_rollup <- imds_detail_dt[,{
  ## if there's just one row in the group of ID's, return nothing
  list(
    count_every_fault = .N,
    max_ci_value = max(CI.Value),
    max_rotor_turn_time_air_sec = max(Rotor.Turn.Time...In.Air..s.),
    max_rotor_turn_time_ground_sec = max(Rotor.Turn.Time...On.Ground..s.)
  )}, by = c("BUNO","fileEventIndex")]
setkeyv(imds_rollup,c("BUNO","fileEventIndex"))
imds_rollup$max_ci_value <- NULL   # max_ci_value has all NA
4nkexdtk

4nkexdtk1#

我也遇到过这个问题,它是由无效的断点引起的:例如,当您设置断点,然后修改代码将断点移动到注解或空行时,就会发生这种情况。
只需清除所有断点并重新源代码。

fae0ux8s

fae0ux8s2#

这是R Studio的小故障,不是代码中的bug,我通过关闭R Studio项目(不保存项目工作区)然后重新打开它来解决这个问题。

8fq7wneg

8fq7wneg3#

免责声明:我是一个完整的新手R。
我在Rstudio中调试收到的一段代码时,也遇到了同样的错误。我清理了环境。我注解了除第一行之外的所有行,并逐渐取消注解代码的大部分,直到剩下原始代码。错误从未弹出。
这发生在我身上的两个不同的脚本。
所以,我不知道错误的原因,但你可能有一个变通办法。

gudnpqoy

gudnpqoy4#

我已经测试了以下一个/一些可能会有所帮助(每个要点是一个单独的修复):

  • 重新启动RStudio。
  • 检查断点是否被分配给空行,在空行中似乎不可能放置断点。在这种情况下,删除有问题的断点。

相关问题