[R] reexpand a matrix after subsetting

Adaikalavan Ramasamy ramasamy at cancer.org.uk
Tue Aug 30 21:03:20 CEST 2005


1) Do you really need to turn rows 3, 6, 9 of mat into NA ? I would
suggest the use of usediff() to remove them after complete.cases

2) The trick is to create a matrix of the same dimension as 'mat' but
initialised with NAs followed by replacing the required rows.

Example :

   w <- which( complete.cases(mat) )
   w <- setdiff( w, c(3,6,9) )
 
   out <- matrix( NA, nr=nrow(mat), nc=ncol(mat) )
   out[ w, ] <- 2 * mat[ w, ]

Regards, Adai



On Mon, 2005-08-29 at 18:11 +0200, Ido M. Tamir wrote:
> Hi,
> 
> suppose I have a matrix (or dataframe) 
> as a result from subsetting.
> 
> mat <- matrix(1:20,ncol=2)
> mat[c(3,6,9),] <- NA
> cc <- complete.cases(mat)
> sub <- mat[cc,,drop=FALSE]
> sub <- sub * 2
> #some caluculations with sub.
> 
> now I would like to expand sub somehow
> so row 3,6, and 9 would be filled with 
> NAs but the rest should be in place again.
> Is there a simple function for this?
> 
> merge is not an option.
> 
> Thank you very much for your help.
> 
> Ido
> 
> 
>       [,1] [,2]
>  [1,]    2   22
>  [2,]    4   24
>  [3,]   NA   NA
>  [4,]    8   28
>  [5,]   10   30
>  [6,]   NA   NA
>  [7,]   14   34
>  [8,]   16   36
>  [9,]   NA   NA
> [10,]   20   40
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>




More information about the R-help mailing list