[R] Deos anyone know of a summary of conformability rules? along with a specific problem

David Winsemius dwinsemius at comcast.net
Sat Jul 4 21:10:13 CEST 2009


On Jul 3, 2009, at 1:29 PM, Steven Rytina wrote:

>    The rules for  conformability of objects required for various  
> operators remain a mystery as do some related problems like the  
> rules for recycling in creating arrays etc. Would someone be able to  
> direct me to where such rules are stated?
>
>    In a related vein, there are all manner of operations that are  
> readily coded in Gauss or in MATA that fail, often mysteriously, in  
> R. Are there some guidelines available?

Not sure. Haven't seen any. Generally the complaint posted here is  
that R is not Matlab. Here is one professor's answer to that one:

http://germain.its.maine.edu/~hiebeler/comp/matlabR.pdf

>
>    And here is a specific problem:
>
>         I would like to carry out logical comparisons between a  
> (vector?) of length EYE and each row of a JAY by EYE object,  
> obtaining a conforming JAY by EYE result of comparisons such as   
> Obj[Jay,Eye] == Vec[Eye]
>
>    Any thoughts on how to effect this would be welcome.

 > i =10; j=4
 > vi <- 1:10
 > mji <- matrix(1:40, nrow=j)
 > matrix( mapply("==", vi,  mji[1:nrow(mji), ] ),
             nrow=nrow(mji) , byrow=TRUE)

       [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9] [,10]
[1,]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
[2,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[3,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[4,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

The fact that you have reversed the conventional order (for R anyway)  
of the indices makes me wonder it that is a source of confusion. You  
may have had problems in constructing an appropriate iterative row- 
wise comparison if you did not realize that the default order that  
matrix elements are filled and accessed is column-wise. The result of  
the mapply is just a long vector (and vi gets recycled)  so it needs  
to be hammered back into conformance to get what you specified.

>
>    Among many failed efforts,
>
>    as.matrix(7 element Vec) == { an 8 row, 7 column data.frame}
>
>            yields a 8 by 7 result
>
>        v1 vs Ob[1,1]      v2 vs Obj[1,2]   ...
>        v2 vs Ob[2,1]           .
>         .                        et cetera
>         .
>        v7 vs Obj[7,1]
>        v1  vs Obj[8,1]
>
> while
>    as.matrix(7 element Vec) == t{ the 8 row, 7 column data.frame}   
> yields a conformability error.
>
> Thanks for any help or comments.
> 	[[alternative HTML version deleted]]
>
> ______________________________________________

David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list