[Rd] Warning when drop is missing

Hadley Wickham hadley at rice.edu
Sun May 8 17:41:35 CEST 2011

Hi all,

One common bug I find in my code is that I've forgotten to specify
drop = F when subsetting a data frame, and then my code breaks when
the result is unexpectedly a vector. Does anyone have an effective
technique for preventing this from happening?  I have an approach (see
below) that works for the similar case of not explicitly specifying
na.rm behaviour, but since the subsetting functions are primitive this
approach doesn't work.



  objs <- c(ls("package:base", "package:stats"))
  has_missing_arg <- function(name) {
    x <- get(name)
    if (!is.function(x)) return(FALSE)

    args <- names(formals(x))
    "na.rm" %in% args
  f_miss <- Filter(has_missing_arg, objs)

  trace_all <- function(fs, tracer) {
    sapply(fs, trace, tracer = tracer, print = FALSE)

  trace_all(f_miss, quote(if(missing(na.rm)) stop("na.rm not set")))

Assistant Professor / Dobelman Family Junior Chair
Department of Statistics / Rice University

More information about the R-devel mailing list