# [R] outer

Peter Holzer holzer at stat.math.ethz.ch
Thu May 10 09:59:49 CEST 2001

```Hello Sean

When using outer you need vectorized functions. I think in your case it
would be enough to change the last line of your function to

ifelse(r==0, y, gcd(y,r))

Cheers, Peter

Sean Carmody writes:
> I've just begun playing around with defining functions in R and
> I'm not really sure what's going on in the following situation.
>
> I've defined the following function:
>
> gcd <- function(x,y) {
> 	x <- as.integer(x); y <- as.integer(y)
> 	q <- as.integer(x / y)
> 	r <- x - q * y
> 	if (r==0) y else gcd(y,r)
> }
>
> As expected, it gives the following results:
>
> > gcd(3,2)
> [1] 1
>
> > gcd(2,4)
> [1] 2
>
> etc. However, the function behaves strangely with outer:
>
> > outer(1:5,1:5,gcd)
>      [,1] [,2] [,3] [,4] [,5]
> [1,]    1    2    3    4    5
> [2,]    1    2    3    4    5
> [3,]    1    2    3    4    5
> [4,]    1    2    3    4    5
> [5,]    1    2    3    4    5
>
> If i change the second line of the definition of gcd to
>
> 	y <- as.integer(x); x <- as.integer(y)
>
> then the effect of gcd should not change, and the following
> results still hold:
>
> > gcd(3,2)
> [1] 1
>
> > gcd(2,4)
> [1] 2
>
> however, now outer gives a different result:
>
> > outer(1:5,1:5,gcd)
>      [,1] [,2] [,3] [,4] [,5]
> [1,]    1    1    1    1    1
> [2,]    2    2    2    2    2
> [3,]    3    3    3    3    3
> [4,]    4    4    4    4    4
> [5,]    5    5    5    5    5
>
> Somehow something strange seems to be happening to the
> internal variable r when outer is used, but I'm not sure what
> or why. Any thoughts would be appreciated.
>
> Sean.
>
>
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

```