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@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:cbe...@tajo.ucsd.edu               UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/  La Jolla, San Diego 92093-0901

______________________________________________
R-help@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.

Reply via email to