[R] Merging matrices of different rows

Steven Yen @tyen @end|ng |rom ntu@edu@tw
Sun Jun 29 18:13:47 CEST 2025


Thanks to all. In my application I can always arrange to have the shorter matrix come second which is to be filled with NA. I Will try the ts approach. Words work less effectively for me. This could have work if plain R can be more accommodating in cbind.  Thanks.

Steven from iPhone

> On Jun 29, 2025, at 11:03 PM, Jeff Newmiller <jdnewmil using dcn.davis.ca.us> wrote:
> 
> This capability that ts objects have seems ill-advised. There is always a meaning associated with which row and column a matrix has, and this assumes that the shorter dimension is associated with times corresponding to the first rows of the longer matrix. In general you don't know whether the NAs should be at the beginning or whether there are missing rows in the middle, or even whether the time intervals don't overlap at all or are on different intervals. IMO there should be a separate step required before cbind that resolves these questions and appropriately extends the dimension rather than embedding this particular resolution approach into the cbind function. It could be as simple as an "extend Rows" function... as long as it is explicit in the calling code where this strategy can more easily be identified, debated, and fixed.
> 
>> On June 29, 2025 4:56:23 AM PDT, Gabor Grothendieck <ggrothendieck using gmail.com> wrote:
>> cbind does work on differently shaped ts objects so:
>> 
>> a <- matrix(1:12,nrow=6)
>> b <- matrix(5:12,nrow=4)
>> 
>> tmp <- cbind(ts(a), ts(b))
>> array(tmp, dim(tmp))
>> 
>> giving
>> 
>>      [,1] [,2] [,3] [,4]
>> [1,]    1    7    5    9
>> [2,]    2    8    6   10
>> [3,]    3    9    7   11
>> [4,]    4   10    8   12
>> [5,]    5   11   NA   NA
>> 
>>> On Thu, Jun 26, 2025 at 6:47 AM Steven Yen <styen using ntu.edu.tw> wrote:
>>> 
>>> I'd like to cbind matrices of different number of rows, with missing values filled by "NA". I used dplyr. The following is obviously not working. Help appreciated.
>>> 
>>>> library(dplyr)
>>>> a<-matrix(1:12,nrow=6); a
>>>     [,1] [,2]
>>> [1,]    1    7
>>> [2,]    2    8
>>> [3,]    3    9
>>> [4,]    4   10
>>> [5,]    5   11
>>> [6,]    6   12
>>>> b<-matrix(5:12,nrow=4); b
>>>     [,1] [,2]
>>> [1,]    5    9
>>> [2,]    6   10
>>> [3,]    7   11
>>> [4,]    8   12
>>>> cbind.fill(a,b)
>>> Error in cbind.fill(a, b) : could not find function "cbind.fill"
>>> 
>>> Steven from iPhone
>>>        [[alternative HTML version deleted]]
>>> 
>>> ______________________________________________
>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>> 
>> 
>> 
> 
> --
> Sent from my phone. Please excuse my brevity.

	[[alternative HTML version deleted]]



More information about the R-help mailing list