[R] package.skeleton from within function: objects not found
Tineke Casneuf
tineke.casneuf at gmail.com
Tue Jan 29 10:10:54 CET 2008
Hi all,
sorry to bother you all once more, but I still haven't solved this
problem. Is there anyone who knows how to pass an environment as an
argument to package.skeleton from within function, so that this
environment can be saved into a newly build source package? See
example script below.
Many thanks in advance,
Kindest regards,
tine
On Jan 28, 2008 12:38 PM, Tineke Casneuf <tineke.casneuf at gmail.com> wrote:
> Professor Ripley,
>
> do you have an idea why it works for me to save different types of
> objects, but not for the environment object I construct in the
> function:
>
> ### Example of a function that works without error:
>
> fun2 <- function(myname){
> f <- function(x,y) x+y
> g <- function(x,y) x-y
> d <- data.frame(a=1, b=2)
> e <- "hello"
> env <- sys.frames()[[sys.nframe()]]
> package.skeleton(list=c("f","g","d","e"), name=myname,env=env)
> }
> fun2("mypkg")
>
> ####
>
> fun3 <- function(myname){
> myenv <- new.env()
> apply(x, 1, function(row){
> assign(row[1], row[2], envir=myenv)
> })
> f <- function(x,y) x+y
> g <- function(x,y) x-y
> d <- data.frame(a=1, b=2)
> e <- "hello"
> env <- sys.frames()[[sys.nframe()]]
> package.skeleton(list=c("f","g","d","e","myenv"), name=myname,env=env)
> }
> fun3("mypkg")
> ###
>
> For the second example, 'fun3', I get this error message:
>
> Error in save(list = item, file = file.path(data_dir, sprintf("%s.rda", :
> object 'myenv' not found
>
>
> Thanks in advance!
>
>
>
> On Jan 28, 2008 9:30 AM, Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:
> > You need to set the 'environment' argument (the help file is incomplete).
> > e.g.
> >
> > env <- sys.frames()[[sys.nframe()]]
> > package.skeleton(name = pkgName, list=c("f","e", "myenv"), env=env)
> >
> >
> >
> >
> >
> > On Mon, 28 Jan 2008, Tineke Casneuf wrote:
> >
> > > Hi all,
> > >
> > > I ran into a strange error: I am trying to create a package skeleton for a
> > > new source package from within a function. Objects that are created in this
> > > function are to be included in my package, but for some reason, I get an
> > > error message saying that these objects cannot be found.
> > >
> > > Here is the code:
> > > ######
> > > myfun <- function(pkgName,x){
> > > myenv <- new.env()
> > > apply(x, 1, function(row){
> > > assign(row[1], row[2], envir=myenv)
> > > })
> > > f <- function(x,y) x+y
> > > e <- rnorm(1000)
> > > # browser()
> > > package.skeleton(name = pkgName, list=c("f","e", "myenv"))
> > > return(myenv)
> > > }
> > > x <- data.frame(keys = LETTERS[1:5], values = 1:5)
> > > myfun("test", x)
> > > ######
> > >
> > > And my sessionInfo:
> > >> sessionInfo()
> > > R version 2.6.1 (2007-11-26)
> > > i386-pc-mingw32
> > > locale:
> > > LC_COLLATE=English_United States.1252;LC_CTYPE=English_United
> > > States.1252;LC_MONETARY=English_United
> > > States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252
> > > attached base packages:
> > > [1] stats graphics grDevices utils datasets methods base
> > >>
> > > I did not find anything referring to this problem in the help page, on the R
> > > mailing list or wiki. Has anyone noticed this or can someone explain to me
> > > why my objects cannot be found?
> > >
> > > Many thanks in advance,
> > > best wishes,
> > >
> > > Tine
> > >
> > > [[alternative HTML version deleted]]
> > >
> > > ______________________________________________
> > > R-help at 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.
> > >
> >
> > --
> > Brian D. Ripley, ripley at stats.ox.ac.uk
> > 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
> >
>
More information about the R-help
mailing list