[R] paste data

Peter Dalgaard P.Dalgaard at biostat.ku.dk
Wed Jun 18 11:11:20 CEST 2008


Sybille Wendel wrote:
> Hello,
>
> I need a command.
> I have a lot of data in different dataframes(auto.0a, auto.0b, auto.0c, auto.5Na,...), that has similar names.
>
> I could print the names all at once wih a loop with the command paste(), see below:
>
> plot<-c("0a","0b","0c","5Na","5Nb","5Nc","PKa","PKb","PKc","5NPKa","5NPKb",
> 	"5NPKc","10NPKa","10NPKb","10NPKc","20NPKa","20NPKb","20NPKc")
>
> for (x in 1:length(plot))
> {
> 	name<-paste("auto.",plot[x],sep="")
> 	print(name)
> }
>
> I want to do very similar things with all the dataframes and their structure is also the same.
> Is there a way to write a loop? (so that I don't have to write the same 18 times)
> I tried things like that:
>
> for (x in 1:length(plot))
> {
> 	plot(paste("auto.",plot[x],sep="")[,1],paste("auto.",plot[x],sep="")[,2],col=...)
> }
>
> But it doesn't work because it just takes the character "auto.0a".
>
>   
The short answer is get(), but this is an opportunity to get yoursellf
acquainted with the mindframe of vectorization in R:

plotNames<-c("0a","0b","0c","5Na","5Nb","5Nc","PKa","PKb","PKc","5NPKa","5NPKb",
"5NPKc","10NPKa","10NPKb","10NPKc","20NPKa","20NPKb","20NPKc")
frames <- lapply(paste("auto", plotNames, sep="."), get)
plotOne <- function(f,n)
    plot(f[1:2], title="n")
mapply(plotOne, frames, plotNames)

-- 
   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907



More information about the R-help mailing list