Thank you very much for your answer. Unfortunately, I cannot use any package... Do you have a solution ? Thank you in advance
Edouard Hardy On Tue, Sep 3, 2013 at 11:49 AM, Gerrit Eichner < gerrit.eich...@math.uni-giessen.de> wrote: > Hello, Edouard, > > taking logs of A's elements (so that * turns into +, so to say), using a > left-multiplication with a certain band matrix of the package Matrix, and > exponentiating the result again could provide a solution (see below). > > > I know have the following problem: >> I have a matrix : >> A = >> 1 2 3 >> 4 5 6 >> 7 8 9 >> 9 8 7 >> 4 5 6 >> 3 2 1 >> >> And I would like to have : >> B = >> 1*4*7 2*5*8 3*6*9 >> 4*7*9 5*8*8 6*9*7 >> 7*9*4 8*8*5 9*7*6 >> 9*4*3 8*5*2 7*6*1 >> >> Here I took the product of 3 rows each time. And 3 needs to be a >> parameter. >> >> Is it possible to do so without any loop ? >> > > > Caveat: Not very carefully tested! > > library( Matrix) > > k <- 3 > ones <- lapply( 1:k, function( j) rep( 1, nrow( A) - j + 1))) > leftmatrix <- bandSparse( n = nrow(A) - k + 1, m = nrow(A), > k = 0:(k-1), diagonals = ones) > > exp( leftmatrix %*% log(A)) > > Hth -- Gerrit > > ------------------------------**------------------------------**--------- > Dr. Gerrit Eichner Mathematical Institute, Room 212 > gerrit.eich...@math.uni-**giessen.de <gerrit.eich...@math.uni-giessen.de> > Justus-Liebig-University Giessen > Tel: +49-(0)641-99-32104 Arndtstr. 2, 35392 Giessen, Germany > Fax: +49-(0)641-99-32109 > http://www.uni-giessen.de/cms/**eichner<http://www.uni-giessen.de/cms/eichner> > ------------------------------**------------------------------**--------- > [[alternative HTML version deleted]] ______________________________________________ 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.