[FLR-list] FLCohort

Laurie lauriekell at googlemail.com
Tue Oct 18 12:02:37 CEST 2011


On 10/18/2011 11:41 AM, ernesto.jardim at jrc.ec.europa.eu wrote:
> On 10/18/2011 11:26 AM, Laurie wrote:
>> I am working on tagging models, where tags are released for a number 
>> of  years and then recaptured in subsequent years. This allows M & Z 
>> to be estimated along a cohort.
>>
>> The data are in the form of number of fish tagged and recovered each 
>> year of a cohort. This means that you can´t use FLCohort which has 
>> age & cohort as dims 1&2.
>>
>> However, if you use the 1st dim for cohort then you can model this 
>> with an FLQuant, i.e.
>>
>> library(plyr)
>>
>> setGeneric("I",              function(object,...)
>>     standardGeneric("I"))
>> setGeneric('O',              function(object, ...)
>>     standardGeneric("O"))
>>
>> setMethod('I', signature(object='FLQuant'),
>>   function(object,...){
>>     dmns <-dimnames(object)
>>     dmns[[1]] 
>> <-ac((dims(object)$minyear-dims(object)$max):(dims(object)$maxyear- 
>> dims(object)$min))
>>     names(dmns)[1]<-"quant"
>>     flc <-FLQuant(NA,dimnames=dmns)
>>
>>     t. <-as.data.frame(object)
>>     t.$cohort <-t.$year-t.$age
>>     flc[] 
>> <-daply(t.,c("cohort","year","unit","season","area","iter"),function(x) 
>> sum(x$data))
>>
>>     return(flc)})
>>
>> setMethod('O', signature(object='FLQuant'),
>>   function(object,...){
>>     dmns <-dimnames(object)
>>     dmns[[1]] 
>> <-ac((dims(object)$maxyear-dims(object)$max):(dims(object)$minyear-dims(object)$min))
>>     names(dmns)[1]<-"age"
>>     flc <-FLQuant(NA,dimnames=dmns)
>>
>>     t. <-as.data.frame(object)
>>     t.$age <-t.$year-t.$quant
>>     t. <-t.[!is.na(t.$data),]
>>     flc[] 
>> <-daply(t.,c("age","year","unit","season","area","iter"),function(x) 
>> sum(x$data))
>>
>>     return(flc)})
>>
>> data(ple4)
>>
>> m1=I(m(ple4))
>> m2=O(m1)
>>
>> It is probably best to derive a new class for this object just to 
>> break VPAs etc. But what to call it? Also how does it relate to 
>> FLCohort.
>> Laurie
>
> You may change the age in FLCohort
>
> library(FLCore)
> data(ple4)
> flc <- FLCohort(catch.n(ple4))
> quant(flc) <- "year"
>
> why not using year in the first dimension ? it should work out of the 
> box.
>
> EJ
>
>
But you don´t get what you want.

I(m(ple4))[1:10,1:10]
An object of class "FLQuant"
, , unit = unique, season = all, area = unique

       year
quant  1957 1958 1959 1960 1961 1962 1963 1964 1965 1966
   1947 0.1   NA   NA   NA   NA   NA   NA   NA   NA   NA
   1948 0.1  0.1   NA   NA   NA   NA   NA   NA   NA   NA
   1949 0.1  0.1  0.1   NA   NA   NA   NA   NA   NA   NA
   1950 0.1  0.1  0.1  0.1   NA   NA   NA   NA   NA   NA
   1951 0.1  0.1  0.1  0.1  0.1   NA   NA   NA   NA   NA
   1952 0.1  0.1  0.1  0.1  0.1  0.1   NA   NA   NA   NA
   1953 0.1  0.1  0.1  0.1  0.1  0.1  0.1   NA   NA   NA
   1954 0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1   NA   NA
   1955 0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1   NA
   1956 0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1

units:  NA
>  FLCohort(m(ple4))[1:10,1:10]
An object of class "FLCohort"
, , unit = unique, season = all, area = unique

     cohort
age  1947 1948 1949 1950 1951 1952 1953 1954 1955 1956
   1   NA   NA   NA   NA   NA   NA   NA   NA   NA  0.1
   2   NA   NA   NA   NA   NA   NA   NA   NA  0.1  0.1
   3   NA   NA   NA   NA   NA   NA   NA  0.1  0.1  0.1
   4   NA   NA   NA   NA   NA   NA  0.1  0.1  0.1  0.1
   5   NA   NA   NA   NA   NA  0.1  0.1  0.1  0.1  0.1
   6   NA   NA   NA   NA  0.1  0.1  0.1  0.1  0.1  0.1
   7   NA   NA   NA  0.1  0.1  0.1  0.1  0.1  0.1  0.1
   8   NA   NA  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1
   9   NA  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1

laurie


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/flr-list/attachments/20111018/b3a3a0e4/attachment.htm>


More information about the flr-list mailing list