Karl Brand
2010-Sep-11 12:00 UTC
[R] 'programatically' list or call objects for use in a function?
Esteemed R users and developers,
How does one 'programatically' list or call objects for use in a
function?
For example, i thought i could do something better than this:
save(A.cwb, B.cwb, C.cwb, D.cwb, E.cwb, F.cwb, file="afile.RData")
with something like these-
prfxs <- c("A", "B", "C", "D",
"E", "F") #**
save(as.name(paste(prfxs, "cwb", sep=".")),
file="afile.RData")
or this-
do.call(save, paste(prfxs, "cwb", sep="."),
file="afile.RData")
Both failed.
#** And while i've got your attention- is there a 'letter
equivalent' to
seq() which would have worked nicely for prfxs? ie., letter.seq(A:F)
Thoughts and suggestions sincerely appreciated,
Karl
--
Karl Brand
Department of Genetics
Erasmus MC
Dr Molewaterplein 50
3015 GE Rotterdam
T +31 (0)10 704 3457 |F +31 (0)10 704 4743 |M +31 (0)642 777 268
Duncan Murdoch
2010-Sep-11 12:10 UTC
[R] 'programatically' list or call objects for use in a function?
On 11/09/2010 8:00 AM, Karl Brand wrote:> Esteemed R users and developers, > > How does one 'programatically' list or call objects for use in a function?It depends on the function.> > For example, i thought i could do something better than this: > > save(A.cwb, B.cwb, C.cwb, D.cwb, E.cwb, F.cwb, file="afile.RData") > > with something like these- > > prfxs <- c("A", "B", "C", "D", "E", "F") #** > save(as.name(paste(prfxs, "cwb", sep=".")), file="afile.RData")For save, use list=paste(prfxs, "cwb", sep=".").> > or this- > > do.call(save, paste(prfxs, "cwb", sep="."), file="afile.RData")do.call wants a *list* of arguments, not a single vector of character strings. You could construct a list of the names of the objects you want to save, but that's a pain. Just use the list= argument (which doesn't want a list argument :-).> > Both failed. > > #** And while i've got your attention- is there a 'letter equivalent' to > seq() which would have worked nicely for prfxs? ie., letter.seq(A:F)Not that I know of, but LETTERS[1:6] will give you the sequence, and it's easy to write a function that you'd call as letter.seq("A", "F"). Having your function work as in your example would be messy. Duncan Murdoch> > Thoughts and suggestions sincerely appreciated, > > Karl > > >