Hi Folks,
[This is not unrelated to the current "vector of vectors" thread,
 but arises quite independently]

Say I have a function f(x,y) which computes a value for scalar
x and y; or, if either x=X or y=Y is a vector, a corresponding
vector of values f(X,y) or f(x,Y) (with the usual built-in
vectorisation of operations).

Now I have X=(x.1,x.2,...,x.m) and Y=(y.1,y.2,...,y.n).
I'm seeking a fast and efficient method to compute (say)

  sum[over elements of Y](f(X,Y))

returning an m-vector in which, for each x.i in X, I have

  sum(f(x.i,Y))

I know I can do this by constructing matrices say M.X and M.Y

  M.X <- matrix(rep(X,length(Y)),nrow=length(Y),byrow=TRUE)
  M.Y <- matrix(rep(Y,length(X)),nrow=length(Y))

then F <- f(M.X,M.Y), then colSums(F). But that doesn't strike me
as particularly "fast and efficient", because of the preliminary
spadework to make M.X and M.Y.

Is there any much better way? Or some function somewhere that
does it? Something like "marg.sum(X,Y,function=f,margin=2)";
therefore with scope for generalisation to more than 2 variables,
e.g. marg.sum(X,Y,Z,function=f,margins=2)
or   marg.sum(X,Y,Z,function=f,margins=c(2,3))

Or, even more general, like:

  marg.apply(X,Y,Z,fun1=f,fun2=sum,margins=c(2,3))

(Such a question must have been asked before, but I haven't
located it).

With thanks,
Ted.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <ted.hard...@wlandres.net>
Fax-to-email: +44 (0)870 094 0861
Date: 13-Nov-10                                       Time: 15:49:22
------------------------------ XFMail ------------------------------

______________________________________________
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