[Rd] Context problem with ... and rbind (PR#860)
Peter Dalgaard BSA
p.dalgaard@pubhealth.ku.dk
04 Mar 2001 23:26:13 +0100
Peter Dalgaard BSA <p.dalgaard@pubhealth.ku.dk> writes:
> ripley@stats.ox.ac.uk writes:
>
> > f <- function(x, ...)
> > {
> > g <- function(x, ...) x
> > rbind(numeric(), g(x, ...))
> > }
> > > f(1:3)
> > Error in rbind(numeric(), g(x, ...)) : ... used in an incorrect context
>
> It's not really rbind that is the culprit here, but the deparsing of
> its argument. A near-minimal version of what I think is the same issue
> is
>
> f <- function(x, ...) h(g(x, ...))
> g <- function(x, ...) x
> h <- function(...)substitute(list(...))
> f(1)
> #Error in h(g(x, ...)) : ... used in an incorrect context
Hmm.... The patch below stops the error, and passes make check, but I
have a nagging suspicion that it isn't the right way to fix this:
diff -u -r1.85 coerce.c
--- src/main/coerce.c 2001/01/15 14:52:09 1.85
+++ src/main/coerce.c 2001/03/04 22:11:12
@@ -1749,11 +1749,11 @@
if (isNull(el))
return el;
if (CAR(el) == R_DotsSymbol) {
- h = findVar(CAR(el), rho);
+ h = findVarInFrame(rho, CAR(el));
if (h == R_NilValue)
return substituteList(CDR(el), rho);
if (TYPEOF(h) != DOTSXP) {
- if (h == R_MissingArg)
+ if (h == R_UnboundValue || h == R_MissingArg)
return substituteList(CDR(el), rho);
error("... used in an incorrect context");
}
--
O__ ---- Peter Dalgaard Blegdamsvej 3
c/ /'_ --- Dept. of Biostatistics 2200 Cph. N
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._