[R] Qs re writing/reading arrays, dataframes

Roy Shimizu rshmz29 at gmail.com
Mon Dec 13 18:20:41 CET 2010


Hi!  I'm just getting started with R (and with the analysis of large
datasets in general).  I have several beginner-level questions whose
answers I have not been able to find, and was hoping one of you would
be kind enough to throw me a cluebrick or two.

I have a 6-dimensional numeric array (which I'll call myarray) that is
"fully named".  By this I mean that non-NULL dimnames are assigned to
all dimensions, and, furthermore, the dimensions themselves are named.
 In fact, I created the dimnames attribute with an expression of the
form:

dimnames(myarray) <- list(line=c(...), "compound:name"=c(...),
"compound:concentration"=c(...), time=c(...), replicate=c(...),
"antibody:name"=c(...))

...where the values passed for attributes line, "compound:name", ..,
"antibody:name" are all vectors with mode "character".

Question 1: I'd like to save this array in a file having an ASCII
(i.e. non-binary) format that can be easily read by R.  How can I
format this file so that not only the dimnames are specified, but also
the names of the dimensions ("line", "compound:name", ...,
"antibody:name") themselves?  I thought that the output of write.table
would give me a clue, but in fact this output does not mention the
dimension names at all.

Question 2: In fact, I don't think that write.table is the right
function to use in this case, because it seems to be designed for
dataframes rather than arrays.  When write.table coerces myarray into
a data.frame, dimensions 2-6 get collapsed into one.  Hence, when the
data is read back into R, it has the wrong dimensions.  What's the
best way to convert a "fully named" array like myarray into a
data.frame, so as to preserve all the array's dimnames and dimension
names?

Question 3: I've come across several times the advice to the effect
that data.frames are usually the best choice of representation for
such data.  In my case, however, I don't see what I would be gaining
by casting my array into a data.frame.  In what kind of situation is
it advantageous to work with a data.frame rather than an array?

Thanks in advance!

Roy



More information about the R-help mailing list