[R] cumsum over a list or an array

Stephane DRAY stephane.dray at umontreal.ca
Sat Oct 2 00:37:24 CEST 2004


Hello list,

my question is related to svd of a matrix:

b=matrix(rnorm(50),10,5)
mysvd=svd(b)

I would like to compute each xi where xi = di* ui %*% t(vi). I do it by :

xlist=sapply(1:ncol(b), function(x1,y) 
y$d[x1]*y$u[,x1]%*%t(y$v[,x1]),y=mysvd,simplify=F) # result is a list

xarray=array(sapply(1:ncol(b), function(x1,y) 
y$d[x1]*y$u[,x1]%*%t(y$v[,x1]),y=mysvd),c(nrow(b),ncol(b),ncol(b))) # 
result is an array

Now i would like to compute cumulative sum:

y1=x1 # y[,,1]
y2=x1+x2 # y[,,2]
...

I have try to do it with apply without succes:

y=apply(xarray,c(1,2),cumsum)

The results are good but not in the format that I want. I could modify the 
results to modify the format but I am sure that it exists another faster way.

Is it possible to do the same on the list ?

Thanks in advance

Sincerely



Stéphane DRAY
-------------------------------------------------------------------------------------------------- 

Département des Sciences Biologiques
Université de Montréal, C.P. 6128, succursale centre-ville
Montréal, Québec H3C 3J7, Canada

Tel : (514) 343-6111 poste 1233         Fax : (514) 343-2293
E-mail : stephane.dray at umontreal.ca
-------------------------------------------------------------------------------------------------- 

Web                                          http://www.steph280.freesurf.fr/




More information about the R-help mailing list