[R] To draw observation [m, n] from 20 data frames named frame1, ... , frame20

Ray Brownrigg Ray.Brownrigg at mcs.vuw.ac.nz
Tue May 27 01:54:06 CEST 2008


There is another way (isn't there always with R?):

for(i in 1:20) {
  vect[i] <- get(paste("frame",i,sep=""))[1, 2]
}

get() is your friend, and tidier than eval(parse()).

HTH
Ray Brownrigg

On Tue, 27 May 2008, Peter Dalgaard wrote:
> Gaurav Ghosh wrote:
> > Hi all,
> >
> > I have 20 data frames, named frame1, ... , frame20.  Each data frame has
> > the dimension 20x5.  I need to build a function that calls out the
> > observation in Row 1, Col 2 from all 20 data frames and places it in a
> > vector of length 20.  I have tried the following code:
> >
> > vect <- rep(0,20)
> > for(i in 1:20){
> >     vect[i] <- paste("frame",i,"[1,2]",sep="")
> > }
> >
> > The vector that results is of the form ("frame1[1,2]", ... ,
> > "frame20[1,2]"). Instead,  the vector I need has the numerical values
> > that correspond to frame1[1,2], frame2[1,2], ... etc.  How should I amend
> > my code?
> >
> > Thanks,
> >
> > Gaurav Ghosh
>
> You need an eval(parse(.....)) step if you want to go that route.
>
> However, it is easier if you have your frames in a list to begin with, say
>
> mylist <- mget(sprintf(1:20, fmt="frame%d"))
>
> Then it is just
>
> sapply(mylist, "[", 1, 2)



More information about the R-help mailing list