[R] merge large matrices

Duncan Murdoch murdoch at stats.uwo.ca
Thu Jun 2 22:29:14 CEST 2005


On 6/2/2005 4:19 PM, Stefan Mischke wrote:
> Dear List
> 
> I have two large matrices A and B. Both have the same dimensions, let's 
> say 20k x 30k. About half the cells of B are missing. Now I'm looking 
> for an efficient way to merge them, so that the missing values in B are 
> replaced by the corresponding values of A.
> 
> Matrix A
> 	[,1]	[,2]	[,3]
> [1,]	1	2	3
> [2,]	4	5	6
> 
> merged with Matrix B
> 
> 	[,1]	[,2]	[,3]
> [1,]	10	NA	NA
> [2,]	NA	50	60
> 
> equals
> 
> 	[,1]	[,2]	[,3]
> [1,]	10	2	3
> [2,]	4	50	60
> 
> One way to do this, is  of course looping through all the cells, 
> checking for NAs and then replacing them with the corresponding values. 
> But this is way too slow for my application. There must be a more 
> efficient way.
> Does R provide any functions for this?

As long as the dimensions are the same:

replace <- is.na(B)
B[replace] <- A[replace]

should work.

Duncan Murdoch




More information about the R-help mailing list