[R] Making a series of similar, but modified .r files - suggested method(s)?
Charles C. Berry
cberry at tajo.ucsd.edu
Sat Aug 21 22:19:56 CEST 2010
On Sat, 21 Aug 2010, Laura S wrote:
> Dear all:
>
> Any suggestions are much appreciated. I am looking for a way to make a
> series of similar, but slightly modified, .r files.
>
> My issue is automating making 320 .r files that change the for(i in 1:x) in
> my base .r file (as well as other elements, e.g., the load(...),
> setwd(...)). For smaller jobs running on a single computer with batch files,
> I have been manually changing the for(i in 1:x) line, etc..
>
R is a scripting language (among other things!).
You can read in a template .R file and then substitute pieces of it inside
a loop that writes the revised peices to a directory from which you can
later source or BATCH them.
Here is a simple example with just one substitution:
Here is the template file where the pieces to be substituted is "#for i#":
,----[ template.R ]
| #for i#{
| toupper(i)
| }
|
`----
> template <- readLines("template.R") # read it in!
> dir.create("temp") # make a place to save new .Rs
> # modify the template
> for (i in letters[1:5]){
+ cat( sub( "#for i#",
+ paste("i <- '",i,"'\n",sep=''),
+ template), sep='\n',
+ file=file.path("temp",paste(i,"R",sep='.')))
+ }
> # look at a.R
> readLines(file.path("temp","a.R"))
[1] "i <- 'a'" "{" "toupper(i)" "}" ""
> sapply(Sys.glob("temp/*.R"),source) # Run them all
temp/a.R temp/b.R temp/c.R temp/d.R temp/e.R
value "A" "B" "C" "D" "E"
visible TRUE TRUE TRUE TRUE TRUE
>
HTH,
Chuck
> Why does this matter to me? I am planning on running a simulation experiment
> on a linux cluster as a serial job. Although not elegant, it has been
> suggested I make 320 .r files so qsub runs one .r file and then selects
> other jobs. Thus, the manual route I am currently using would take a very
> long time (given multiple runs of 320 .r files, given experimental
> replication).
>
> Thank you,
> Laura
>
>
> --
> " Genius is the summed production of the many with the names of the few
> attached for easy recall, unfairly so to other scientists"
>
> - E. O. Wilson (The Diversity of Life)
>
> [[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.
>
Charles C. Berry (858) 534-2098
Dept of Family/Preventive Medicine
E mailto:cberry at tajo.ucsd.edu UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901
More information about the R-help
mailing list