[R] source a specific function
Duncan Murdoch
murdoch at stats.uwo.ca
Mon Jun 18 20:53:50 CEST 2007
On 6/18/2007 12:11 PM, (Ted Harding) wrote:
> On 18-Jun-07 14:28:35, Gabor Grothendieck wrote:
>> This loads all the functions into an anonymous environment defined
>> by local and then exports f to the global environment.
>>
>> f <- local({
>> source("/a.R", local = TRUE)
>> environment(f) <- .GlobalEnv
>> f
>> })
>
> That looks neat! Two questions:
>
> 1. Would something similar work for extracting selected functions
> from a library (assuming that you know about interdependencies)?
>
> E.g. something like
>
> f <- local({
> library(f.etc.lib)
> environment(f) <- .GlobalEnv
> f
> })
The exact syntax you list there won't work, but in any case, changing
the environment of a function in a package is a bad idea -- it may need
to reference things from the namespace of the package.
>
> 2. Having done what you describe to extract just f from a source
> file, can one then "delete" the local environment used to load
> the source? I think what I'm basically asking is whether the
> exporting is done "by value" (local environment deletion OK)
> or "by reference" (deletion would destroy the exported object).
Gabor answered this: it will go away automatically.
Duncan Murdoch
More information about the R-help
mailing list