On Mar 1, 2010, at 10:53 AM, Benedikt Gehr wrote:

hi
I'm trying to use the function odiag(x) for matrix calculations.

You assume that everyone is using the package that contains odiag?


I would like to assign new values to an off-diagonal in a matrix.
When I use the diag (x) function I could write something like

p<-matrix(seq(1:12),ncol=4)
p.new<-matrix(rep(0,12),ncol=4)

diag(p.new)<-diag(p)
p.new

But this won't work with odiag. How can I turn odiag (x) into something like diag (x) in order to assign off-diagonals new values?
Perhaps something like:

p.new[row(p.new) == col(p.new) - 1] <- diag(p)
> p.new
     [,1] [,2] [,3] [,4]
[1,]    1    1    0    0
[2,]    0    5    5    0
[3,]    0    0    9    9

In the end I would like to do something like this:

h<-matrix(rep(c(0.2,0.3,0.3,1),4),ncol=4,byrow=T) #harvest rates for the 3 diferent years S<-matrix(rep(c(0.9,0.8,0.7),4),ncol=3,byrow=T) #survival rates

for (i in 0:(L-2)){

It's not clear if this is correct code on you machine, but on our machines we don't have "L".


odiag(p,i) <- (odiag(h,i)*c(1,cumprod((1-odiag(h[1:R,1: (L-1)],i))*odiag(S[1:R,1:(L-1)],i))))
     p[Rp-i,Lp] <- 1-sum(odiag(p[1:Rp,-Lp],i)) ## add one more value
    p[1,L]<-h[1,L]
  p[2,Lp]<-1-p[1,L]
 }

Does anybody know how I can do this?

Do what? You have given non-executable code but no verbal description of what you are attempting.


Thank you very much for the help

Best wishes



David Winsemius, MD
Heritage Laboratories
West Hartford, CT

______________________________________________
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