All,
I am starting to write object-oriented R code for the first time and anticipate having multiple R files with dependencies in between. I\'m new to R and have no
This question is very closely related to: "How to organize large R programs?"
You should consider creating an R package. You can use the package.skeleton
function to start with given a set of R files. I also strongly recommend using roxygen
to document the package at the beginning, because it's much more difficult to do it after the fact.
Read "Writing R Extensions". The online book "Statistics with R" has a section on this subject. Also take a look at Creating R Packages: A Tutorial by Friedrich Leisch. Lastly, if you're in NY, come to the upcoming NY use-R group meeting on "Authoring R Packages: a gentle introduction with examples".
Just to rehash some suggestions about good practices:
R CMD check
which is very helpful at catching bugs; separately you can look at using the codetools
package.Edit:
Regarding how do make incremental changes without rebuilding and installing the full package: I find the easiest thing to do is to make changes in your relevant R file and then use the source
command to load those changes. Once you load your library into an R session, it will always be lower in the environment (and lower in priority) than the .GlobalEnv, so any changes that you source or load in directly will be used first (use the search
command to see this). That way you can have your package underlying and you are overwriting changes as you're testing them in the environment.
Alternatively, you can use an IDE like StatET or ESS. They make loading individual lines or functions out of an R package very easy. StatET is particularly well designed to handle managing packages in a directory-like structure.
this is for benefit of others who are directed to this post upon their search.
I too faced exactly same scenario and found no resource which explained it clearly.
Here is my attempt to put the solution in a few simple steps:
1) Create a new project directory
2) Create a Package via R studio(same process as above)
3) Keep both in same location(to avoid confusion).
4) Install and load packages: devtools and and roxygen2.
5) use function load_all().
And you are done.