[R] an easy way to construct this special matirx

Gabor Grothendieck ggrothendieck at gmail.com
Thu Aug 16 16:04:34 CEST 2007


It was pointed out that the required matrix may not be square and
the superdiagonal was missing in my prior post.  Here is a revision:

r <- 2; nr <- 4; nc <- 5 # test data

x <- matrix(nr = nr, nc = nc)
x <- row(x) - col(x) + 1
(x >= 0) * r ^ x

On 8/16/07, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
> Here are two solutions.  In the first lo has TRUE on the lower diagonal
> and diagonal. Then we compute the exponents, multiplying by lo to zero
> out the upper triangle.  In the second rn is a matrix of row numbers
> and rn >= t(rn) is the same as lo in the first solution.
>
> r <- 2; n <- 5 # test data
>
> lo <- lower.tri(diag(n), diag = TRUE)
> lo * r ^ (row(lo) - col(lo) + 1)
>
> Here is another one:
>
> rn <- row(diag(n))
> (rn >= t(rn)) * r ^ (rn - t(rn) + 1)
>
> On 8/15/07, shaowenhua at comcast.net <shaowenhua at comcast.net> wrote:
> > Hi,
> > Sorry if this is a repost. I searched but found no results.
> > I am wondering if it is an easy way to construct the following matrix:
> >
> > r      1     0     0    0
> > r^2   r     1     0    0
> > r^3   r^2  r     1    0
> > r^4   r^3  r^2  r    1
> >
> > where r could be any number. Thanks.
> > Wen
>



More information about the R-help mailing list