On Fri, Jan 3, 2013, Bert Gunter wrote
Well...

On Thu, Jan 3, 2013 at 10:00 AM, ivo welch <ivo.welch <at> anderson.ucla.edu> wrote:

Dear R developers---I just spent half a day debugging an R program,
which had two bugs---I selected the wrongly named variable, which
turns out to have been a scalar, which then happily multiplied as if
it was a matrix; and another wrongly named variable from a data frame,
that triggered no error when used as a[["name"]] or a$name .  there
should be an option to turn on that throws an error inside R when one
does this.  I cannot imagine that there is much code that wants to
reference non-existing columns in data frames.

But I can -- and do it all the time: To add a new variable, "d" to a
data frame, df,  containing only "a" and "b" (with 10 rows, say):

df[["d"]] <- 1:10

Yes but that's `[[<-`. Ivo was talking about `[[` and `$`; i.e., select
only not assign, if I understood correctly.


Trying to outguess documentation to create error triggers is a very bad idea.

Why exactly is it a very bad idea? (I don't necessarily disagree, just asking
for more colour.)

R already has plenty of debugging tools -- and there is even a "debug"
package. Perhaps you need a better programming editor/IDE. There are
several listed on CRAN, RStudio, etc.

True, but that relies on you knowing there's a bug to hunt for. What if you
don't know you're getting incorrect results, silently? In a similar way
that options(warn=2) turns known warnings into errors, to enable you to be more strict if you wish, an option to turn on warnings from `[[` and `$`
if the column is missing (select only, not assign) doesn't seem like a
bad option to have. Maybe it would reveal some previously silent bugs.

Anyway, I'm hoping Ivo will let us know if he likes the simple mask I
proposed, or not. That's already an option that can be turned on or off.
But if his bug was selecting the wrong column, not a missing one, then
I'm not sure anything could (or needs to be) done about that.

Matthew

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to