Skip to content
Back to formatted view

Raw Message

Message-ID: <ca6d62b3799f17f5617998df07bdf36b@mail.nih.gov>
Date: 2005-05-12T14:27:56Z
From: Sean Davis
Subject: assigning to a list in a package environment
In-Reply-To: <971536df0505120709d0133a@mail.gmail.com>

On May 12, 2005, at 10:09 AM, Gabor Grothendieck wrote:

> On 5/11/05, Sean Davis <sdavis2 at mail.nih.gov> wrote:
>> I have a list in a package environment
>>
>> assign('refflat',list(),pos='package:locPkg')
>>
>> to which I would like to make assignments like:
>>
>> refflat[['a']] <- read.table('fileA.txt')
>> refflat[['b']] <- read.table('fileB.txt')
>>
>> I am doing this to guard against a local version of refflat hanging
>> around, as I want to refresh it with each new session (and so, want to
>> store it in the package environment).  I just can't quite get hot to
>> make that work so that I am storing to the package:refflat rather than
>> any in .GlobalEnv.
>
> Try this:
>
> locPkg <- as.environment("package:locPkg")
> locPkg$refflat <- list()
> locPkg$refflat[["a"]] <- read.table("fileA.txt")
>

Gabor,

Thanks.  That will do the trick, I think.  Now, just one more question 
as followup if I may?  If I am executing a function that was defined in 
locPkg, how can I determine dynamically what environment I am in?  Them 
I could do something like

myFun <- function (x) {
   # code
   locPkg <- as.environment( .... )
   # more code
}

where '....' is replaced dynamically by the package environment of the 
package in which the function myFun is defined.  The goal is to make 
the code a bit more portable.

Again, thanks for the help.

Sean