[R] elegant matrix creation
Robin Hankin
r.hankin at noc.soton.ac.uk
Tue Jul 12 13:11:47 CEST 2005
Hi
I want to write a little function that takes a vector of arbitrary
length "n" and returns a matrix of size n+1 by n+1.
I can't easily describe it, but the following function that works for
n=3 should convey what I'm trying to do:
f <- function(x){
matrix(c(
1 , 0 , 0 , 0,
x[1] , 1 , 0 , 0,
x[1]*x[2] , x[2] , 1 , 0,
x[1]*x[2]*x[3], x[2]*x[3], x[3], 1
),
4,4, byrow=T)
}
f(c(10,7,2))
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 10 1 0 0
[3,] 70 7 1 0
[4,] 140 14 2 1
>
As one goes down column "i", the entries get multiplied by successive
elements of x, starting with x[i], after the first "1"
As one goes along a row, one takes a product of the tail end of x,
until the zeroes kick in.
Am I missing some clever solution?
--
Robin Hankin
Uncertainty Analyst
National Oceanography Centre, Southampton
European Way, Southampton SO14 3ZH, UK
tel 023-8059-7743
More information about the R-help
mailing list