Philip <phi...@sctkjeld.dk> writes: > Hi all.
Hi Philip -- I think this thread https://stat.ethz.ch/pipermail/r-devel/2009-March/052867.html addresses your issue. Basically, create an environment or closure in which you can modify variables. HTH, Martin > > > I'm for the first time trying to make a library in R 2.8.1 on Ubuntu > Linux. The library is very simple, R functions just need to share a > variable (that is defined in the R code) and maybe functions and export > functions for the user to .GlobalEnv. This variable should only be > directly accessible from the global workspace (without change of > environment) via a hereto dedicated function. It only consists of R > code. I'm not sure if I should rather ask R-help. If so, just tell me. > > The package source is available at > http://www.delff.dk/~philip/bdplot/ > the check output at > http://www.delff.dk/~philip/bdplot.Rcheck/ > > The package code was checked and stopped because of lack of examples. > Until that, everything is OK. > >> ### ** Examples >> >> ~~ simple examples of the most important functions ~~ > Error: unexpected symbol in "~~ simple examples" > Execution halted > > I would like to get the code issue solved before moving the > documentation from the R scripts and have proceeded the to building and > installation. These two last steps gave no warnings or errors. > > My problem is that I cannot change the mentioned variable (from now on > called .FOO) that belongs to the namespace of the package. I think it is > because .FOO variable in some locked state, maybe by default created as > read-only. It is called .FOO because I use exportPattern("^[[:alpha:]]+") > as NAMESPACE file. I don't import anything. > > I have a function (bar) that, like par does with .Pars from the graphics > namespace, modifies the contents of a list. This function has in the > bottom (when the function name is called without () from the R command > line) a line > > <environment: namespace:"mypackage"> > > This is like par() has the graphics namespace mentioned, and therefore, > as I would expect. I can via this function read the contents of the > variable just by print(.FOO). This cannot be done from .GlobalEnv which > is as intended. The surprise is that I cannot write to it. If I do > > .FOO$x <<- "value" > (names and values are arguments to the function, like with par().), I > get the error: > > cannot change value of locked binding for '.FOO' > > The double arrow, I use because <- does not affect the contents of .FOO > after the function has run. I don't know how I can use assign in this > case. I don't know a name for my package's environment. I have tried > with my package's name in both assign() and unlockBinding(), but my > package's name is not recognized as an environment (neither beginning > with a dot.). I also tryed unlockBinding() in the NAMESPACE file. > > I don't know if this is normal, but I get > <environment: R_GlobalEnv> > from print(parent.frame()) and things like > <environment: 0x8df2ad0> > from print(environment()) > This is surprising to me. I would expect > <environment: bdplot> > from environment(). > > How can I get to write to .FOO via bar()? > > > Thank you very much > Philip. > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel -- Martin Morgan Computational Biology / Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109 Location: Arnold Building M1 B861 Phone: (206) 667-2793 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel