On 12/13/2009 02:42 PM, Guillaume Yziquel wrote:
baptiste auguie a écrit :
`[[.data.frame`

Note that this will only be the source code if you have options "keep.source" and "keep.source.pkgs" set to TRUE, and the environment variable "R_KEEP_PKG_SOURCE" equal to yes.

Otherwise you see the code parsed and deparsed, which loses comments and formatting.

> `[[.data.frame`
function(x, ..., exact=TRUE)
{
    ## use in-line functions to refer to the 1st and 2nd ... arguments
    ## explicitly. Also will check for wrong number or empty args
    na <- nargs() - !missing(exact)
    if(!all(names(sys.call()) %in% c("", "exact")))
        warning("named arguments other than 'exact' are discouraged")

    if(na < 3L)
        (function(x, i, exact)
          if(is.matrix(i)) as.matrix(x)[[i]]
          else .subset2(x, i, exact=exact))(x, ..., exact=exact)
    else {
        col <- .subset2(x, ..2, exact=exact)
        i <- if(is.character(..1))
            pmatch(..1, row.names(x), duplicates.ok = TRUE)
        else ..1
        .subset2(col, i, exact=exact)
    }
}
<environment: namespace:base>


> writeLines( deparse( `[[.data.frame` ) )
function (x, ..., exact = TRUE)
{
    na <- nargs() - (!missing(exact))
    if (!all(names(sys.call()) %in% c("", "exact")))
        warning("named arguments other than 'exact' are discouraged")
    if (na < 3L)
        (function(x, i, exact) if (is.matrix(i))
            as.matrix(x)[[i]]
        else .subset2(x, i, exact = exact))(x, ..., exact = exact)
    else {
        col <- .subset2(x, ..2, exact = exact)
        i <- if (is.character(..1))
            pmatch(..1, row.names(x), duplicates.ok = TRUE)
        else ..1
        .subset2(col, i, exact = exact)
    }
}

Romain

and more generally see Rnews Volume 6/4, October 2006 "Accessing the
Sources".


HTH,

baptiste

Thank you so much.

Indeed, I've been able to look at the source code of the function from
the source code of R. But I was quite keen on knowing how to do this
from the toploop. Thanks a lot.



--
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
|- http://tr.im/HlX9 : new package : bibtex
|- http://tr.im/Gq7i : ohloh
`- http://tr.im/FtUu : new package : highlight

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to