[R] projection.matrix() {popbio} for more than one matrix

Chris Stubben stubben at lanl.gov
Mon Feb 25 04:29:21 CET 2008


Michelle,

I would probably run a loop as well and save all matrices to a single list
(see hudsonia and calathea on working with lists of matrices).

First, run the example(test.census) to get the stage-fate data frame "trans"
and then run this code to save the matrices into a list "all".

years<-2001:2002   #or unique(trans$year)
all<-vector("list", length(years) )
names(all)<-years

## loop through years
for (s.year in years)
{
   ## Add individual fertilities 
   test.trans <- subset(trans, year==s.year)
   seedlings<-nrow(subset(test.census, year==s.year+1 & stage=="seedling"))
   test.trans$seedling<-test.trans$fruits/sum(test.trans$fruits) * seedlings
    ## save test.trans to another list if needed for bootstrapping,
calculating pooled matrix etc.
    ## test.trans  
 
   ## either one will work to get list index 
   all[[as.character(s.year)]] <-projection.matrix(test.trans)
   ##all[[ s.year- (years[1]-1) ]]  <-projection.matrix(test.trans)

}

all


$`2001`
              
               seedling vegetative reproductive
  seedling          0.0        0.0       1.6667
  vegetative        0.5        0.5       0.0000
  reproductive      0.0        0.5       0.6667

$`2002`
              
               seedling vegetative reproductive
  seedling          0.0        0.0       0.6667
  vegetative        0.2        0.5       0.3333
  reproductive      0.0        0.0       0.0000



There's also a loop in the demo(fillmore) example that uses the aq.census
data to create matrices for seven years.


Chris





Michelle DePrenger-Levin wrote:
> 
> Hello,
> 
>  
> 
> I am trying to use the projection.matrix( ) function and am following the
> example given. I have my data formatted very similar to the test.census
> example. 
> 
>  
> 
>> str(AsMi05mat)
> 
> `data.frame':   1854 obs. of  6 variables:
> 
>  $ Tag      : num  501 502 503 504 505 506 507 508 509 510 ...
> 
>  $ Year     : int  1995 1995 1995 1995 1995 1995 1995 1995 1995 1995 ...
> 
>  $ Length   : num  34 37 11 24 7 44 4 7 12 20 ...
> 
>  $ Flowering: int  1 1 0 1 0 1 0 0 0 1 ...
> 
>  $ Fruits   : int  22 22 0 89 0 15 0 0 0 0 ...
> 
>  $ Stage    : Factor w/ 5 levels "","Dead","Dormant",..: 4 4 5 4 5 4 5 5 5
> 4
> ...
> 
>  
> 
> The example data includes three years but only shows how to create a
> matrix
> from year 1 to 2. I have 13 years of data and would like to automate
> creating
> all matrices for each pair of years. 
> 
>  
> 
> I tried a for( ) loop but don't know how to assign new names for each
> matrix
> so end up with only the final comparison (2005 to 2006). I assume an
> apply( )
> function is the way to go but can't see how to do it. 
> 
>  
> 
> Thanks for any help!
> 
>  
> 
> Michelle
> 
>  
> 
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at 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.
> 
> 

-- 
View this message in context: http://www.nabble.com/projection.matrix%28%29-%7Bpopbio%7D-for-more-than-one-matrix-tp15646115p15673408.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list