Re: [R] how to join two arrays using their column names intersection

From: jim holtman <jholtman_at_gmail.com>
Date: Tue 30 Jan 2007 - 12:30:46 GMT

> ar1 <- array(data=c(1:16),dim=c(4,4))
> ar2 <- array(data=c(1:16),dim=c(4,4))
> colnames(ar1)<-c("A","B","D","E")
> colnames(ar2)<-c("C","A","E","B")
>
> ar1

     A B D E

[1,] 1 5  9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16

> ar2
C A E B [1,] 1 5 9 13 [2,] 2 6 10 14

[3,] 3 7 11 15
[4,] 4 8 12 16
> # get the common names between the matrices
> same <- intersect(colnames(ar1), colnames(ar2))
> same

[1] "A" "B" "E"
> # join them together
> rbind(ar1[,same], ar2[,same])

     A B E

[1,] 1  5 13
[2,] 2  6 14
[3,] 3  7 15
[4,] 4  8 16
[5,] 5 13  9
[6,] 6 14 10
[7,] 7 15 11
[8,] 8 16 12

>

On 1/30/07, Federico Abascal <fabascal@cnb.uam.es> wrote:
> I have found something that partially works. Just to illustrate what am
> I looking for:
>
> for(a in colnames(ar1)) {if(a %in% colnames(ar2)) { cat(a, "\t",
> ar1[,a],"\t",ar2[,a],"\n")}}
> A 1 2 3 4 5 6 7 8
> B 5 6 7 8 13 14 15 16
> E 13 14 15 16 9 10 11 12
>
> I think I can use something similar to obtain the desired results, but I
> am curious to know if there is a better way to do it.
> Federico
>
>
> Federico Abascal wrote:
> > Dear all,
> >
> > I have a problem that may be someone of you can help. I am a newbie and
> > do not find how to do it in manuals.
> >
> > I have two arrays, for example:
> >
> > ar1 <- array(data=c(1:16),dim=c(4,4))
> > ar2 <- array(data=c(1:16),dim=c(4,4))
> > colnames(ar1)<-c("A","B","D","E")
> > colnames(ar2)<-c("C","A","E","B")
> >
> >
> >> ar1
> >>
> > A B D E
> > [1,] 1 5 9 13
> > [2,] 2 6 10 14
> > [3,] 3 7 11 15
> > [4,] 4 8 12 16
> >
> >> ar2
> >>
> > C A E B
> > [1,] 1 5 9 13
> > [2,] 2 6 10 14
> > [3,] 3 7 11 15
> > [4,] 4 8 12 16
> >
> >
> > I would like to join both arrays only for the columns present in both
> > ar1 and ar2 (the intersection). I would like to obtain this:
> > A B E
> > [1,] 1 5 13
> > [2,] 2 6 14
> > [3,] 3 7 15
> > [4,] 4 8 16
> > [5,] 5 13 9
> > [6,] 6 14 10
> > [7,] 7 15 11
> > [8,] 8 16 12
> >
> > (rows 5-8 correspond to ar2)
> >
> > I have tried several things but I am unable to accomplish it. Any
> > experienced user could give me some advice, please?
> >
> > I have another question: how can I sort the columns of an array
> > according to its column names (for ar2, change CAEB to ABCE)?
> >
> > Thanks in advance!
> > Federico
> >
> > ______________________________________________
> > R-help@stat.math.ethz.ch mailing list
> > 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.
> >
> >
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> 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.
>

-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem you are trying to solve?

______________________________________________
R-help@stat.math.ethz.ch mailing list
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.
Received on Tue Jan 30 23:48:36 2007

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Tue 30 Jan 2007 - 13:30:26 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.