On Fri, 7 Apr 2006, Henrik Bengtsson wrote: > On 4/6/06, Seth Falcon <[EMAIL PROTECTED]> wrote: >> Tim Bergsma <[EMAIL PROTECTED]> writes: >> >>> Hi. >>> >>> I'm trying to find a systematic way to prevent assignment to names of >>> existing functions. >> >> An alternative would be to put your functions into an R package with a >> namespace. Then you won't be able to overwrite them (easily). > > Can even be a package without a namespace - to overwrite anything in a > package you have to explicitly do assign() to the environment of the > package.
I don't think the concern was actually to 'overwrite' but rather to redefine, which you can do by masking. To quote the original post 'I'm trying to find a systematic way to prevent assignment to names of existing functions.' Note, `to names'. Namespaces obviate masking of names of functions in your package or in base, and from other namespaces you import. > > Another way is to add an environment to the search path (?search) and > add you functions to that. Example: > > # Add an empty environment to the search path > env <- attach(list(), name="myFunctions") > > # Define functions > assign("foo", function(x) { cat("foo: x=", x, "\n", sep="") }, envir=env) > assign("bar", function(x) { cat("bar: x=", x, "\n", sep="") }, envir=env) > > # Assign 'foo' in the global environment > foo <- 3 > > # Function foo() is still available in 'myFunctions' > foo(4) > > If you have a myFunction.R file with function definitions, e.g. > > foo <- function(x) { > cat("foo: x=", x, "\n", sep="") > } > > bar <- function(x) { > cat("bar: x=", x, "\n", sep="") > } > > then it's a bit tricky to make source() assign objects to the > environment. Instead you can use sourceTo() in the R.utils package, > e.g. > > sourceTo("myFunctions.R", envir=env) > > /Henrik > >> + seth >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> >> > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > > -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel