Is this what you want: > my.foo <- function( a, b ) a - b > z <- combn(ncol(y), 2) # get all the combinations of 2 columns > result <- do.call(cbind, lapply(seq(ncol(z)), function(.cols){ + my.foo(y[,z[1,.cols]], y[, z[2, .cols]]) + })) > > > result [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25] [,26] 1 -1 -2 -3 -4 -5 -6 -7 -8 -1 -2 -3 -4 -5 -6 -7 -1 -2 -3 -4 -5 -6 -1 -2 -3 -4 -5 2 -2 -4 -6 -8 -10 -12 -14 -16 -2 -4 -6 -8 -10 -12 -14 -2 -4 -6 -8 -10 -12 -2 -4 -6 -8 -10 3 -3 -6 -9 -12 -15 -18 -21 -24 -3 -6 -9 -12 -15 -18 -21 -3 -6 -9 -12 -15 -18 -3 -6 -9 -12 -15 4 -4 -8 -12 -16 -20 -24 -28 -32 -4 -8 -12 -16 -20 -24 -28 -4 -8 -12 -16 -20 -24 -4 -8 -12 -16 -20 5 -5 -10 -15 -20 -25 -30 -35 -40 -5 -10 -15 -20 -25 -30 -35 -5 -10 -15 -20 -25 -30 -5 -10 -15 -20 -25 6 -6 -12 -18 -24 -30 -36 -42 -48 -6 -12 -18 -24 -30 -36 -42 -6 -12 -18 -24 -30 -36 -6 -12 -18 -24 -30 7 -7 -14 -21 -28 -35 -42 -49 -56 -7 -14 -21 -28 -35 -42 -49 -7 -14 -21 -28 -35 -42 -7 -14 -21 -28 -35 8 -8 -16 -24 -32 -40 -48 -56 -64 -8 -16 -24 -32 -40 -48 -56 -8 -16 -24 -32 -40 -48 -8 -16 -24 -32 -40 9 -9 -18 -27 -36 -45 -54 -63 -72 -9 -18 -27 -36 -45 -54 -63 -9 -18 -27 -36 -45 -54 -9 -18 -27 -36 -45 [,27] [,28] [,29] [,30] [,31] [,32] [,33] [,34] [,35] [,36] 1 -1 -2 -3 -4 -1 -2 -3 -1 -2 -1 2 -2 -4 -6 -8 -2 -4 -6 -2 -4 -2 3 -3 -6 -9 -12 -3 -6 -9 -3 -6 -3 4 -4 -8 -12 -16 -4 -8 -12 -4 -8 -4 5 -5 -10 -15 -20 -5 -10 -15 -5 -10 -5 6 -6 -12 -18 -24 -6 -12 -18 -6 -12 -6 7 -7 -14 -21 -28 -7 -14 -21 -7 -14 -7 8 -8 -16 -24 -32 -8 -16 -24 -8 -16 -8 9 -9 -18 -27 -36 -9 -18 -27 -9 -18 -9 > > y 1 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 10 12 14 16 18 3 3 6 9 12 15 18 21 24 27 4 4 8 12 16 20 24 28 32 36 5 5 10 15 20 25 30 35 40 45 6 6 12 18 24 30 36 42 48 54 7 7 14 21 28 35 42 49 56 63 8 8 16 24 32 40 48 56 64 72 9 9 18 27 36 45 54 63 72 81 >
On Wed, Mar 25, 2009 at 9:03 AM, Ken-JP <kfmf...@gmail.com> wrote: > > Okay, this one is hard to put into words: > >> x <- 1:9; names(x) <- x >> y <- x %o% x >> y > > 1 2 3 4 5 6 7 8 9 > 1 1 2 3 4 5 6 7 8 9 > 2 2 4 6 8 10 12 14 16 18 > 3 3 6 9 12 15 18 21 24 27 > 4 4 8 12 16 20 24 28 32 36 > 5 5 10 15 20 25 30 35 40 45 > 6 6 12 18 24 30 36 42 48 54 > 7 7 14 21 28 35 42 49 56 63 > 8 8 16 24 32 40 48 56 64 72 > 9 9 18 27 36 45 54 63 72 81 > >> my.foo( a, b ) { c <- a - b; #really more complex, but just to illustrate >> } > > --------------------------------------------------------------------- > > What I would like to do is apply my.foo() which takes two columns, a and b, > does an operation and returns another column c. The columns I want to feed > into my.foo() are all the combinations of columns in y. So I want to apply > my.foo( y[,1], y[,1] ) and then my.foo( y[,1], y[,2] ), etc... for all > combinations() of the 10 columns in y. > > I would expect the final output to be 10x10x10. Passing 10 columns by 10 > columns to my.foo() which outputs a vector of 10 numbers at a time. > > ***So in essence, what I am trying to accomplish is like outer(), but > instead of operating on atomic values, I want to operate on columns of y. > > I know I can use loops to accomplish this, but I would like to code as > R-like as possible. I am learning a great deal about "how to think in R" > from the excellent replies on this board. > > Thanks in advance for any suggestions. > > > > -- > View this message in context: > http://www.nabble.com/Doing--o--that-operates-on-columns-instead-of-atomics-tp22701363p22701363.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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. > -- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve? ______________________________________________ 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.