# File src/library/base/R/formals.R # Part of the R package, http://www.R-project.org # # Copyright (C) 1995-2012 The R Core Team # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ formals <- function(fun = sys.function(sys.parent())) { if(is.character(fun)) fun <- get(fun, mode = "function", envir = parent.frame()) .Internal(formals(fun)) } body <- function(fun = sys.function(sys.parent())) { if(is.character(fun)) fun <- get(fun, mode = "function", envir = parent.frame()) .Internal(body(fun)) } alist <- function (...) as.list(sys.call())[-1L] `body<-` <- function (fun, envir = environment(fun), value) { if (is.expression(value)) { if (length(value) > 1L) warning("using the first element of 'value' of type \"expression\"") value <- value[[1L]] } as.function(c(as.list(formals(fun)), list(value)), envir) } `formals<-` <- function (fun, envir = environment(fun), value) { bd <- body(fun) as.function(c(value, if(is.null(bd) || is.list(bd)) list(bd) else bd), envir) }