[Rd] Subsetted 1-D arrays (PR#4110)

Peter Dalgaard p.dalgaard at biostat.ku.dk
Wed Oct 22 01:09:38 MEST 2003


David Brahm  <brahm at alum.mit.edu> writes:

> In R-patched_2003-10-20, subsetted 1-D arrays no longer get converted to
> vectors.  The NEWS file documents this change, as an indirect result of bug
> report 4110.  I just wanted to mention this can break code in some rather
> obscure ways, such as this toy example:
> 
>   R> x <- sort(tapply(1:8, rep(1:4,2), sum))  # Was vector, now is 1D array
>   R> y <- matrix(1:4, 1,4)                    # 1x4 matrix
>   R> x + y                                    # Used to return a 1x4 matrix
>      Error in x + y : non-conformable arrays

Without the sort() that was an error in 1.8.0 too. However, we've
found other surprises like 

  prop.trend.test(tt[1,], margin.table(tt,2))

which internally will pass a 1D array as weights to lm.
 
> I agree with the change, but I would beware that some puzzled users may not
> associate new "tapply problems" with this news item.

Yep. And I tend to agree that the original problem had to be fixed.

> Also, *should* you be able to add a (4) array to a (1,4) array?

...or to a (4,1) array? Currently the answer is clearly neither: if
both terms have dimensions, the dimensions must match. It is kind of
tempting though.

-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907



More information about the R-devel mailing list