Skip to content
Prev 170435 / 398503 Next

Extending each element in a list, or rbind()-ing arrays of different length without recycling

Combining the various approaches on the list, here's a simple
one-liner that puts the NAs at the end:

     t(apply(mat,1,function(r) { dr<-duplicated(r); c( r[!dr],
rep(NA,sum(dr)) ) ))

If you don't care where the NAs are, the following is a tad shorter
and perhaps clearer:

     mat[ t(apply(mat,1,duplicated)) ] < -NA                  # modifies mat

         -s