understood. but, please, consider not people like me but unwary beginners and students of R. I have used R now for decades, and even I am baffled by it. Couldn't you make R code easier to debug not only for people like me (who can indeed tweak their environments) but also for novice users?
On Sun, Jan 19, 2025 at 8:46 AM <luke-tier...@uiowa.edu> wrote: > > On Sun, 19 Jan 2025, Ivo Welch wrote: > > > Hi Duncan — Wonderful. Thank you. Bug or no bug, I think it would be > > a huge improvement for user-friendliness if R printed the last line by > > default *every time* a script dies. Most computer languages do so. > > > > Should I file it as a request for improvement to the R code > > development team? Maybe R can be improved at a very low cost to the > > development team and a very high benefit to newbies. > > No. There are already many ways to influence the way the default error > handler prints information about errors, mstly via options(). In > particular you may want to look at entries in ?options for > > show.error.locations > showErrorCalls > showWarningCalls > > and adjust your options settings accordingly. > > Best, > > luke > > > > > Regards, > > > > /ivo > > > > On Sun, Jan 19, 2025 at 2:39 AM Duncan Murdoch <murdoch.dun...@gmail.com> > > wrote: > >> > >> On 2025-01-18 8:27 p.m., Ivo Welch wrote: > >>> I am afraid my errors are worse! (so are my postings. I should have > >>> given an example.) > >>> > >>> ``` > >>> x <- 1 > >>> y <- 2 > >>> nofunction("something stupid I am doing!") > >>> z <- 4 > >>> ``` > >>> > >>> and > >>> > >>> ``` > >>>> source("where-is-my-water.R") > >>> Error in nofunction("something stupid I am doing!") : > >>> could not find function "nofunction" > >>> ``` > >>> > >>> and no traceback is available. > >> > >> Okay, I see. In that case traceback() doesn't report the line, but it > >> still is known internally. You can see it using the following function: > >> > >> showKnownLocations <- function() { > >> calls <- sys.calls() > >> srcrefs <- sapply(calls, function(v) if (!is.null(srcref <- attr(v, > >> > >> "srcref"))) { > >> srcfile <- attr(srcref, "srcfile") > >> paste0(basename(srcfile$filename), "#", srcref[1L]) > >> } else ".") > >> cat("Current call stack locations:\n") > >> cat(srcrefs, sep = " ") > >> cat("\n") > >> } > >> > >> I haven't done much testing on this, but I think it can be called > >> explicitly from any location if you want to know how you got there, or > >> you can set it as the error handler using > >> > >> options(error = showKnownLocations) > >> > >> For example, try this script: > >> > >> options(error = showKnownLocations) > >> f <- function() showKnownLocations() > >> x <- 1 > >> f() > >> y <- 2 > >> nofunction("something stupid I am doing!") > >> z <- 4 > >> > >> I see this output from source("test.R"): > >> > >> > source("test.R") > >> Current call stack locations: > >> . . . . test.R#4 test.R#2 > >> Error in nofunction("something stupid I am doing!") : > >> could not find function "nofunction" > >> Current call stack locations: > >> . . . . test.R#6 > >> > >> The first report is from the explicit call in f() on line 2 that was > >> invoked on line 4, and the second report happens during error handling. > >> > >> I supppose the fact that traceback() isn't showing you the line 6 > >> location could be considered a bug. > >> > >> Duncan Murdoch > >> > >> > > > > ______________________________________________ > > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide > > https://www.r-project.org/posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > > > > -- > Luke Tierney > Ralph E. Wareham Professor of Mathematical Sciences > University of Iowa Phone: 319-335-3386 > Department of Statistics and Fax: 319-335-3017 > Actuarial Science > 241 Schaeffer Hall email: luke-tier...@uiowa.edu > Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu/ ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide https://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.