sapply(mylist, '[', 1) is equivalent to
sapply(mylist, function(x) x[1]) # select just the first element "[" is an function that is called with a object and an index. Using it the way I did in the email was a shorthand way of doing it. Here is an example: > x <- list(1,2,3) > x[1] [[1]] [1] 1 > `[`(x, 1) [[1]] [1] 1 Notice the function call `[`(x,1). This is what is being done in the sapply and passing the 1 as the second parameter. On Fri, Aug 14, 2009 at 1:30 PM, Tim Clark<mudiver1...@yahoo.com> wrote: > Jim, > > That works great! However, would you please explain what the '[' and the 1 > do in the sapply function? I understand that you are cutting x by quarter, > then creating a list of x that is split based on those cuts. I just don't > understand what "[" means in this contex, or what the number one at the end > does. > > Thanks for you help, > > Tim > > > > Tim Clark > Department of Zoology > University of Hawaii > > > --- On Fri, 8/14/09, jim holtman <jholt...@gmail.com> wrote: > >> From: jim holtman <jholt...@gmail.com> >> Subject: Re: [R] Finding minimum of time subset >> To: "Tim Clark" <mudiver1...@yahoo.com> >> Cc: r-help@r-project.org >> Date: Friday, August 14, 2009, 6:18 AM >> Here is one way to do it: >> >> > >> mytime<-c("12:00:00","12:00:05","12:15:05","12:15:06","12:20:00","12:30:01","12:45:01","13:00:00","13:15:02") >> > # you might want a date on your data >> > x <- as.POSIXct(mytime, format="%H:%M:%S") >> > # create quarter hour intervals for the data range >> > quarter <- seq(trunc(min(x), 'days'), trunc(max(x) >> + 86400, 'days'), by='15 min') # add 86400 to add a day for >> truncation >> > # cut the data by quarter hours and then take the >> first value in each group >> > x.s <- sapply(split(x, cut(x, breaks=quarter), >> drop=TRUE), '[', 1) >> > # lost the 'class' for some reason; put it back >> > class(x.s) <- c("POSIXt", "POSIXct") >> > # the answer >> > x.s >> 2009-08-14 12:00:00 >> 2009-08-14 12:15:00 >> 2009-08-14 >> 12:30:00 2009-08-14 >> 12:45:00 2009-08-14 13:00:00 >> "2009-08-14 12:00:00 EDT" "2009-08-14 12:15:05 EDT" >> "2009-08-14 >> 12:30:01 EDT" "2009-08-14 12:45:01 EDT" "2009-08-14 >> 13:00:00 EDT" >> 2009-08-14 13:15:00 >> "2009-08-14 13:15:02 EDT" >> > >> >> >> On Thu, Aug 13, 2009 at 4:10 PM, Tim Clark<mudiver1...@yahoo.com> >> wrote: >> > Dear List, >> > >> > I have a data frame of data taken every few seconds. >> I would like to subset the data to retain only the data >> taken on the quarter hour, and as close to the quarter hour >> as possible. So far I have figured out how to subset the >> data to the quarter hour, but not how to keep only the >> minimum time for each quarter hour. >> > >> > For example: >> > >> mytime<-c("12:00:00","12:00:05","12:15:05","12:15:06","12:20:00","12:30:01","12:45:01","13:00:00","13:15:02") >> > >> subtime<-grep(pattern="[[:digit:]]+[[:punct:]]00[[:punct:]][[:digit:]]+|[[:digit:]]+[[:punct:]]15[[:punct:]][[:digit:]]+|[[:digit:]]+[[:punct:]]30[[:punct:]][[:digit:]]+|[[:digit:]]+[[:punct:]]45[[:punct:]][[:digit:]]+",mytime) >> > mytime[subtime] >> > >> > [1] "12:00:00" "12:00:05" "12:15:05" "12:15:06" >> "12:30:01" "12:45:01" "13:00:00" "13:15:02" >> > >> > This gives me the data taken at quarter hour intervals >> (removes 12:20:00) but I am still left with multiple values >> at the quarter hours. >> > >> > I would like to obtain: >> > >> > "12:00:00" "12:15:05" "12:30:01" "12:45:01" "13:00:00" >> "13:15:02" >> > >> > Thanks! >> > >> > Tim >> > >> > >> > >> > >> > Tim Clark >> > Department of Zoology >> > University of Hawaii >> > >> > ______________________________________________ >> > 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. >> > >> >> >> >> -- >> Jim Holtman >> Cincinnati, OH >> +1 513 646 9390 >> >> What is the problem that you are trying to solve? >> > > > > -- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve? ______________________________________________ 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.