Peng Yu
2009-Oct-26 14:29 UTC
[R] What is the most efficient practice to develop an R package?
I am reading Section 5 and 6 of http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf It seems that I have to do the following two steps in order to make an R package. But when I am testing these package, these two steps will run many times, which may take a lot of time. So when I still develop the package, shall I always source('linmod.R') to test it. Once the code in linmod.R is finalized, then I run the following two steps? I'm wondering what people usually do when developing packages. 1. Run the following command in R to create the package package.skeleton(name="linmod", code_files="linmod.R") 2. Run the following command in shell to install R CMD INSTALL -l /path/to/library linmod
Duncan Murdoch
2009-Oct-26 14:52 UTC
[R] What is the most efficient practice to develop an R package?
On 10/26/2009 10:29 AM, Peng Yu wrote:> I am reading Section 5 and 6 of > http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf > > It seems that I have to do the following two steps in order to make an > R package. But when I am testing these package, these two steps will > run many times, which may take a lot of time. So when I still develop > the package, shall I always source('linmod.R') to test it. Once the > code in linmod.R is finalized, then I run the following two steps? > > I'm wondering what people usually do when developing packages. > > > 1. Run the following command in R to create the package > package.skeleton(name="linmod", code_files="linmod.R") > > 2. Run the following command in shell to install > R CMD INSTALL -l /path/to/library linmodYou only do step 1 once, and you missed step 1.5: edit the files, which comes before step 2. I usually cycle between steps 1.5 and 2 multiple times. Sometimes I will not repeat step 2, I'll put together a small script that includes source('linmod.R') environment(somefunction) <- environment(linmod::somefunction) and source that instead. The second line makes somefunction look for functions in the namespace of the package; it's only useful if my edits only affect one function, and the functions in the package never call it: so usually I do the full install. Duncan Murdoch
Martin Morgan
2009-Oct-26 14:57 UTC
[R] What is the most efficient practice to develop an R package?
Peng Yu wrote:> I am reading Section 5 and 6 of > http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf > > It seems that I have to do the following two steps in order to make an > R package. But when I am testing these package, these two steps will > run many times, which may take a lot of time. So when I still develop > the package, shall I always source('linmod.R') to test it. Once the > code in linmod.R is finalized, then I run the following two steps? > > I'm wondering what people usually do when developing packages. > > > 1. Run the following command in R to create the package > package.skeleton(name="linmod", code_files="linmod.R")Do this once, to get a skeleton. Then edit the R source etc in the created package.> 2. Run the following command in shell to install > R CMD INSTALL -l /path/to/library linmodsee R CMD INSTALL --help and use options that minimize the amount of non-essential work, e.g., no vignettes or documentation until that is the focus of your development, or --libs-only if you are working on C code. Use --clean to avoid stale package components. Develop individual functions interactively, but write a script library(MyPackage) someFunction() so that R -f myscript.R allows you to easily load your package and test specific functionality in a clean R session. Martin> > ______________________________________________ > 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.-- 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