Ferri:

I am not sure that I adequately understand your question, but I'll
give it a shot.

1) Do a Web Search on "long form data"; in particular, the following
seemed to be most helpful, but you may prefer one of the other hits:

http://stanford.edu/~ejdemyr/r-tutorials/wide-and-long/

2) See ?reshape  in R for R's take on this.

3) If this is not helpful, note that any 3d array can be
conceptualized as a list of 2d matrices, and this immediately gives an
algorithm to convert a 3-d array to a 2-d matrix which can then be
outputted as an ascii table via write.table() . e.g.

> a <- array(1:24,dim=2:4)
> a
, , 1

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

, , 2

     [,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12

, , 3

     [,1] [,2] [,3]
[1,]   13   15   17
[2,]   14   16   18

, , 4

     [,1] [,2] [,3]
[1,]   19   21   23
[2,]   20   22   24

> b <-do.call(rbind,lapply(1:4,function(i)I(a[,,i])))
> b
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
[3,]    7    9   11
[4,]    8   10   12
[5,]   13   15   17
[6,]   14   16   18
[7,]   19   21   23
[8,]   20   22   24

Note, however, that this is quite inefficient, and a much faster way
to do this would be to take advantage of the column major order in
which arrays are stored; i.e. an array is actually a vector with a
"dim" attribute. However, I'm too lazy to fool with that now .

But if I understand correctly, your probably better off using long
form data in R to process your data as a (tabular) data frame and
forget about the 3d business altogether.

HTH

Cheers,
Bert


Bert Gunter

"The trouble with having an open mind is that people keep coming along
and sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )


On Fri, Nov 11, 2016 at 4:36 AM, Ferri Leberl <ferri.leb...@gmx.at> wrote:
>
>
> Thanks for your answer.
>
> I'm afraid it doesn't.
>
> The planned workflow should be:
>
> Somebody delivers me a table containing the essential relations of an 
> XML-schema in form of a list that should, once it is functional, be generated 
> out of R. So I need a form that is as universal as possible — therefore I 
> thought of a tabular separated list.
> If I make an array:
>
> feld<-array(1:60,dim=c(4,3,5))
>
> save it
>
> save(file="feld",list="feld")
>
> and read it in the bash
>
> cat feld
>
> I receive
>
> U�G�@
>      @Q��z���,9�  
> !��w�?,��3c[�/g�2mSD4ѡ鄆��C��r�>�#�'�]劸���?P5�a��(b�#�$RH#�,rȣ�"J(��*j���&Zh��.z�c�!F▒c�)f�c
>                     K���[����ϼ�Н��;�o|�����Y��N
>
> So I guess it will be a science of its own to understand, how the file is 
> structured.
>
> So I need either a format that allows to easily parse the import 3D-Matrix 
> outside R, or I need any good idea how to avoid the third dimension (e.g., 
> might it function to use a second separation character within the collumns 
> which may contain several items?
>
> Thank you in advance!
> Have a pleasant weekend.
> Yours, Ferri
>
>
>
>
>
> Gesendet: Freitag, 11. November 2016 um 12:02 Uhr
> Von: "Rui Barradas" <ruipbarra...@sapo.pt>
> An: "Ferri Leberl" <ferri.leb...@gmx.at>, "r-helpr-project.org" 
> <r-help@r-project.org>
> Betreff: Re: [R] Importing and exporting threedimensional arrays
> Hello,
>
> You can save 3D objects (or objects of any form or shape) by using ?save.
> You would then retrieve them with ?load.
>
> Hope this helps,
>
> Rui Barradas
>
> Em 11-11-2016 09:36, Ferri Leberl escreveu:
>>
>> Dear all,
>>
>> I want to process a list of XML-Elements.
>> In one dimension the elements are listed; in the other their respective 
>> properties (name, comment, parent, children, attributes).
>>
>> I am writing a script that processes such tables, and another one that 
>> produces sample tables to test the first script.
>> So the first script should import tabular-separated lists, and the second 
>> should export them with write.table (or anything better you suggest me).
>>
>> As long as we stay two dimensional I see no difficulties.
>>
>> However, there can be several children and several attributes. So my idea 
>> was to add a third dimension — but some tests I did showed me that e.g.
>>
>> write.table(array(1:60,dim=c(4,3,5)),"beispielmatrix",sep="\t",quote=FALSE,row.names=F,col.names=F,dec=",")
>>
>> produces a 2D-tsv.
>>
>> So, how can I handle the fact, that there may be several items in a children 
>> resp. atrribute field?
>>
>> Thank you in advance!
>>
>> ______________________________________________
>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide 
>> http://www.R-project.org/posting-guide.html[http://www.R-project.org/posting-guide.html]
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
> ______________________________________________
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to