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

Rolf Turner r.turner at auckland.ac.nz
Thu Feb 12 21:59:40 CET 2009


On 13/02/2009, at 9:06 AM, markleeds at verizon.net wrote:

> Hi Jason: below seems to work. you have to take the transpose because
> the apply
> returns the rows transposed. i'm also not sure how to make the NAs be
> the last
> ones but maybe someone can show us how to do that.

Pretty easy:

na.at.end <- function(x){
i <- is.na(x)
c(x[!i],rep(NA,sum(i)))
}

>
> mat <- matrix(c(2,7,2,7,9,10,10,6,8,6,1,9,7,2,0),byrow=TRUE,nrow=3)
> print(mat)
>
> t(apply(mat,1, function(.row) {
>    .row[duplicated(.row)] <- NA
>    .row
> }))

Then just change to:

t(apply(mat,1, function(.row) {
    .row[duplicated(.row)] <- NA
    na.at.end(.row)
}))

	cheers,

		Rolf

######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}




More information about the R-help mailing list