Skip to content
Back to formatted view

Raw Message

Message-ID: <8b356f880902130958l6942e829j435fdc386c64b4b9@mail.gmail.com>
Date: 2009-02-13T17:58:03Z
From: Stavros Macrakis
Subject: Extending each element in a list, or rbind()-ing arrays of 	different length without recycling
In-Reply-To: <8b356f880902130949p33ff0a50n90bcd75abcf22839@mail.gmail.com>

(typos corrected)

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

On Fri, Feb 13, 2009 at 12:49 PM, Stavros Macrakis
<macrakis at alum.mit.edu> wrote:
> 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
>