[R] Could graph objects be stored in a "two-dimensional list"?

David Winsemius dwinsemius at comcast.net
Thu May 23 22:39:58 CEST 2013


On May 23, 2013, at 8:30 AM, jpm miao wrote:

> Hi,
> 
>  I have a few graph objects created by some graphic package (say, ggplot2,
> which I use frequently). Because of the existent relation between the
> graphs, I'd like to index them in two dimensions as p[1,1], p[1,2], p[2,1],
> p[2,2] for convenience.
> 
>  To my knowledge, the only data type capable of storing graph objects

(This will all be depending on what you do mean by "graph objects".)

> (and
> any R object) is list, but unfortunately it is available in only one
> dimension.

I think both of these presumptions are incorrect.

> Could the graphs be stored in any two-dimensional data type?
> 
>  One remedy that comes to my mind is to build a function f so that
> f(1,1)=1
> f(1,2)=2
> f(2,1)=3
> f(2,2)=4
>  With functions f and f^{-1} (inverse function of f) , the two-dimensional
> indices could be mapped to and from a set of one-dimensional indices, and
> the functions are exactly the way R numbers elements in a matrix. Does R
> have this built-in function for a m by n matrix or more generally, m*n*p
> array? (I know this function is easy to write, but just want to make sure
> whether it exists already)
> 
Matrices can hold list elements:

> matrix( list(a="a"), 2,2)
     [,1] [,2]
[1,] "a"  "a" 
[2,] "a"  "a" 
> matrix( list(a="a"), 2,2)[1,1]
[[1]]
[1] "a"


And list may be nested in a regular "matrix"

> list( list( list(a="a"), list(b="bb") ), 
       list(list(c="ccc"), list(d="dddd") ) )[[1]][[2]]
$b
[1] "bb"


So storing in this manner for access by an appropriately designed function should also be straight-forward. You could argue that the lattice-object panel structure depends on this fact.

> 
> 	[[alternative HTML version deleted]]
Please learn to post  in plain text.

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list