Hello,

I bet there are simpler solutions but I'm not thinking of anything else, right now.

fun <- function(x, y){
        f <- function(a, b){
                a <- as.data.frame(a)
                b <- as.data.frame(b)
                names(a)[1] <- names(b)[1] <- "V1"
                res <- merge(b, a, by = "V1")
                if(nrow(res) > 0) as.matrix(res) else NULL
        }
        dx <- dim(x)[3]
        dy <- dim(y)[3]
        res <- list()
        ires <- 0
        for(idx in seq_len(dx)){
                for(idy in seq_len(dy)){
                        tmp <- f(x[, , idx], y[, , idy])
                        if(!is.null(tmp)){
                                ires <- ires + 1
                                res[[ires]] <- tmp
                        }
                }
        }
        k <- nrow(res[[1]])
        m <- ncol(res[[1]])
        n <- length(res)
        array(unlist(res), dim = c(k, m, n))
}

G <- fun(C, E)
identical(F, G)  #TRUE



Hope this helps,

Rui Barradas

Em 22-02-2013 03:40, Ray Cheung escreveu:
Thanks, Jeff.

Here is a simplified hypothetical sample (sorry for the clumsy code):
A1 <- matrix(1:5, nrow=5, ncol=1)
A2 <- matrix(6:10, nrow=5, ncol=1)
A3 <- matrix(11:15, nrow=5, ncol=1)
A4 <- matrix(16:20, nrow=5, ncol=1)
A5 <- matrix(21:25, nrow=5, ncol=1)
A6 <- matrix(26:30, nrow=5, ncol=1)
B1 <- matrix(c(A1, A2, A3), nrow=5, ncol=3)
B2 <- matrix(c(A2, A3, A4), nrow=5, ncol=3)
B3 <- matrix(c(A3, A4, A5), nrow=5, ncol=3)
C <- array(c(B1, B2, B3), dim = c(5,3,3))
D1 <- matrix(c(A1, A4, A5), nrow=5, ncol=3)
D2 <- matrix(c(A3, A5, A6), nrow=5, ncol=3)
E <- array(c(D1, D2), dim = c(5,3,2))
In the above example, I want to merge array C to array E by matching the
column 1. That is, the resultant array F should look like this:
F1 <- matrix(c(A1, A4, A5, A2, A3), nrow=5, ncol=5)
F2 <- matrix(c(A3, A5, A6, A4, A5), nrow=5, ncol=5)
F <- array(c(F1, F2), dim = c(5,5,2))

I want to have a more general way to do the merging because in reality, the
dimensions of C and E are very over thousands. Thank you very much.

Best Regards,
ray


On Fri, Feb 22, 2013 at 11:28 AM, Jeff Newmiller
<jdnew...@dcn.davis.ca.us>wrote:

I think this specification is insufficient to respond accurately to.
Please make a reproducible subset of your data (or simulated data) and
provide it in dput form, and describe your desired result data set more
clearly.


http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnew...@dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live
Go...
                                       Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
---------------------------------------------------------------------------
Sent from my phone. Please excuse my brevity.

Ray Cheung <ray1...@gmail.com> wrote:

Dear All,

I've 2 arrays A and B:

dim(A) = 100, 10, 1000
dim(B) = 100, 20, 900

I know there are 5 columns of values common to both arrays. I want to
ask
how to merge the 2 arrays. Thanks in advance!

Best Regards,
Ray

       [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org 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@r-project.org 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.


______________________________________________
R-help@r-project.org 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.

Reply via email to