Hi R-devel. Is the following behavior in g1() and h1() expected? It seems
to make "..." arguments work slightly differently from named arguments.

#missing() has the property that it looks "up the chain"
#for example, "z" can be missing in f3 even if
#that argument did have a name ("y") in f2
f1 <- function(x, ...) {
  cat("In f1, missing(x) is ", missing(x), "\n")
  f2(x, ...)
}

f2 <- function(y, ...) {
  cat("In f2, missing(y) is ", missing(y), "\n")
  f3(y, ...)
}

f3 <- function(z, ...) {
  cat("in f3, missing(z) is ", missing(z), "\n")
}

f1( , 2) #all TRUE

#does this also work with ... arguments? It seems to lose track.
g1 <- function(...) {
  cat("In g1, missing(..1) is ", missing(..1), "\n")
  g2(...)
}

g2 <- function(...) {
  cat("In g2, missing(..1) is ", missing(..1), "\n")
  g3(...)
}

g3 <- function(...) {
  cat("in g3, missing(..1) is ", missing(..1), "\n")
}

g1( , 2) #TRUE, TRUE, FALSE ?!

# we can also elicit this lossiness without looking at the virtual ..n
# symbols:

h1 <- function(x, ...) {
  cat("in h1, missing(x) is ", missing(x), "\n")
  h2(x, ...)
}

hh1 <- function(...)
  h2(...)

h2 <- function(...)
  h3(...)

h3 <- function(z, ...)
  cat("in h3, missing(z) is ", missing(z), "\n")

h3( , 1) #missing in h3
h2( , 1) #missing in h3
h1( , 1) #missing in h1 but NOT h3
hh1( , 1) #also not missing in h3

        [[alternative HTML version deleted]]

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

Reply via email to