Here is one other solution. Its nearly the same as the last but uses ts instead of zoo:
> all3 <- do.call(cbind, lapply(apply(peaks, 1, unique), ts)) > colnames(all3) <- make.names(1:ncol(all3)) > all3 Time Series: Start = 1 End = 5 Frequency = 1 X1 X2 X3 1 2 10 1 2 7 6 9 3 9 8 7 4 NA NA 2 5 NA NA 0 or unclass(all3) if you don't want it as a ts object. (Similar comment for the zoo solution.) On Thu, Feb 12, 2009 at 3:16 PM, Gabor Grothendieck <ggrothendi...@gmail.com> wrote: > Try this. After the apply from your post we use lapply > to make each series into a zoo series so that we can later > use zoo's multiway merge. Finally we actually merge them > and in the next statement just makes nice column names: > >> library(zoo) > >> all3 <- do.call(merge, lapply(apply(peaks, 1, unique), zoo)) >> colnames(all3) <- make.names(1:ncol(all3)) >> all3 > X1 X2 X3 > 1 2 10 1 > 2 7 6 9 > 3 9 8 7 > 4 NA NA 2 > 5 NA NA 0 > > > On Thu, Feb 12, 2009 at 2:31 PM, Jason Shaw <jason.shaw...@gmail.com> wrote: >> Hi, >> >> I'm trying to take a matrix such as >> >> [,1] [,2] [,3] [,4] [,5] >> [1,] 2 7 2 7 9 >> [2,] 10 10 6 8 6 >> [3,] 1 9 7 2 0 >> >> and generate a new matrix which contains only the unique values in each row: >> >> [,1] [,2] [,3] [,4] [,5] >> [1,] 2 7 9 NA NA >> [2,] 10 6 8 NA NA >> [3,] 1 9 7 2 0 >> >> My problem is that I can use apply(matrix,MARGIN=1,FUN=unique) to find >> the unique values, but this leaves me with a list with arrays of >> different length: >> >>> x <- apply(peaks,MARGIN=1,FUN=unique) >> [[1]] >> [1] 2 7 9 >> >> [[2]] >> [1] 10 6 8 >> >> [[3]] >> [1] 1 9 7 2 0 >> >> and using do.call("rbind",x) recycles the values of the shorter >> vectors instead of filling them with NA: >> >>> do.call("rbind",x) >> [,1] [,2] [,3] [,4] [,5] >> [1,] 2 7 9 2 7 >> [2,] 10 6 8 10 6 >> [3,] 1 9 7 2 0 >> >> So, I'd like to either take every element of the list and extend it >> with NAs to the length of the longest element, or rbind every element >> where missing places are filled with NAs instead of recycled values. >> Is this possible? Of course, the solution is trivial using a loop, >> but I'm trying to avoid this. >> >> Thanks for any suggestions. >> >> ______________________________________________ >> 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. >> > ______________________________________________ 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.