[R] Doing %o% that operates on columns instead of atomics

Ken-JP kfmfe04 at gmail.com
Wed Mar 25 14:03:37 CET 2009


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.




More information about the R-help mailing list