Hello, I?m looking for examples on how to manipulate the ... internally, e.g. in a .Call or .External function. I?m particularly interested in accessing the environment in which each contribution to ... can be evaluated. So far, I?m using tricks involving passing down the sys.calls() and sys.frames() down to the C function. The documentation in http://cran.r-project.org/doc/manuals/R-ints.html#Dot_002ddot_002ddot-arguments did not help me a lot. Romain
On Dec 12, 2013, at 3:32 PM, Romain Fran?ois <romain at r-enthusiasts.com> wrote:> Hello, > > I?m looking for examples on how to manipulate the ... internally, e.g. in a .Call or .External function. > > I?m particularly interested in accessing the environment in which each contribution to ... can be evaluated. >Arguments in ... are evaluated *before* being passed down to .Call/.External so there is no ... by the time you enter the C code. AFAIR R doesn't allow you to get at the promises outside of internal code, so you either get the call or the values, but nothing in between. Cheers, Simon> So far, I?m using tricks involving passing down the sys.calls() and sys.frames() down to the C function. The documentation in http://cran.r-project.org/doc/manuals/R-ints.html#Dot_002ddot_002ddot-arguments did not help me a lot. > > Romain > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >
Could you pass the environment and then look for the object called ... in it? f <- function(...) { .Call("my_fun", environment()) } I think (and may well be wrong) that you can use standard tools to find the DOTSXP object in that environment. Hadley On Thu, Dec 12, 2013 at 2:32 PM, Romain Fran?ois <romain at r-enthusiasts.com> wrote:> Hello, > > I?m looking for examples on how to manipulate the ... internally, e.g. in a .Call or .External function. > > I?m particularly interested in accessing the environment in which each contribution to ... can be evaluated. > > So far, I?m using tricks involving passing down the sys.calls() and sys.frames() down to the C function. The documentation in http://cran.r-project.org/doc/manuals/R-ints.html#Dot_002ddot_002ddot-arguments did not help me a lot. > > Romain > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel-- http://had.co.nz/