[R] define matrix by outer?
Gabor Grothendieck
ggrothendieck at gmail.com
Fri May 27 03:15:09 CEST 2005
On 5/26/05, Zhen Pang <nusbj at hotmail.com> wrote:
> Dear all,
>
> I'd like to define a k by k matrix where the element is defined by
>
> mn<-function(m,n) sum(choose(m,(m-0:m))*choose((k-m),(n-m+0:m)))
>
> the mn function works fine for scalar m and n, however, it fails to define
> the matrix by outer.
>
> a<-outer(1:k,1:k,mn)
>
> gives error message:
>
> Error in outer(1:k, 1:k, mn) : dim<- : dims [product 64] do not match the
> length of object [1]
> In addition: Warning messages:
> 1: Numerical expression has 64 elements: only the first used in: 0:m
> 2: Numerical expression has 64 elements: only the first used in: 0:m
>
> I can define this matrix by loop or some apply function, however, the outer
> function should be the most straitforward way. How to deal with it? Thanks.
>
Check out ?outer where it mentions that the function must be
able to handle vector arguments. Yours does not but you can
transform it to one which does using mapply:
outer(1:k, 1:k, function(x,y) mapply(mn, x, y))
More information about the R-help
mailing list