Something like this where you use lapply to pass in each element of the list to a function and then rbind the result:
datalist <- split(data,data$UNIT) result <- lapply(datalist, function(.unit){ t0<-match(times$START_DT, .unit$DATETIME) #MAKE A VECTOR OF START TIMES t1<-match(times$STOP_DT, .unit$DATETIME) #MAKE A VECTOR OF STOP TIMES indices<-mapply(FUN = ":", t0, t1) #MAKES A LIST, EACH ELEMENT CONTAINS INDICES OF TIMES CORRESPONDING TO ONE WETLAND idex<-times[rep(1:nrow(times), sapply(indices, length)), c("POND_ID","OBS","REP","PID"), drop = FALSE] #MAKES A DATAFRAME tm<-.unit[unlist(indices), ] #FLATTENS THE LIST OF INDICES INTO A DATAFRAME extracted<-cbind(idex, tm) #BIND IDEX AND TM }) result <- do.call(rbind, result) On Tue, Jun 30, 2009 at 4:20 PM, Mark Na <mtb...@gmail.com> wrote: > Dear R-helpers, > > I have split a dataframe into a list with five elements, with the following > code: > > > datalist<-split(data,data$UNIT) > > I would now like to run some code (below) on each element of the list to > extract rows from the list elements; then I would like to rbind the > extracted rows into a new dataframe containing all of the extracted rows > from all of the list elements. > > I don't need any help with the code itself, it works fine for one chunk of > data (e.g., a single dataframe). The code is: > > t0<-match(times$START_DT, data$DATETIME) #MAKE A VECTOR OF START TIMES > t1<-match(times$STOP_DT, data$DATETIME) #MAKE A VECTOR OF STOP TIMES > indices<-mapply(FUN = ":", t0, t1) #MAKES A LIST, EACH ELEMENT CONTAINS > INDICES OF TIMES CORRESPONDING TO ONE WETLAND > idex<-times[rep(1:nrow(times), sapply(indices, length)), > c("POND_ID","OBS","REP","PID"), drop = FALSE] #MAKES A DATAFRAME > tm<-data[unlist(indices), ] #FLATTENS THE LIST OF INDICES INTO A DATAFRAME > extracted<-cbind(idex, tm) #BIND IDEX AND TM > > But now that I've split my data into a list with five elements, what I > don't > know how to do is wrap my code in a loop or function so I can run it on > each > of the five list elements and then rbind the extracted rows together into a > new dataframe. > > (What I have now is 5 replicates of the above code, and I would like to > replace that with a loop or function.) > > I have spent all morning on this, without much progress, so would > appreciate > any help you might be able to provide. > > Thanks! Mark Na > > [[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<http://www.r-project.org/posting-guide.html> > and provide commented, minimal, self-contained, reproducible code. > -- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve? [[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.