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

markleeds at verizon.net markleeds at verizon.net
Thu Feb 12 22:05:09 CET 2009


  Thanks Rolf. very nice but "pretty easy" is ALWAYS a relative 
statement.



On Thu, Feb 12, 2009 at  3:59 PM, Rolf Turner wrote:

> 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 confidential. If you 
> are not the intended recipient please delete the message and notify 
> the sender. Any views or opinions presented are solely those of the 
> author.
>
> This e-mail has been scanned and cleared by MailMarshal 
> www.marshalsoftware.com
> ######################################################################




More information about the R-help mailing list