Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
##==============================================================================
## Function to build a vector of population size, for each age class ==
##==============================================================================
#' Build a vector
#'
#' @param pop_size a single number. Total Population Size or Number of Pairs.
#' @param pop_size_type character value indicating if the provided value pop_size correpsonds to Total Population Size ("Ntotal")
#' or the Number of Pairs ("Npair"). A stable age distribution is used to infer the size of each age class.
#' @param s a vector of survival probabilities for each age class
#' @param f a vector of fecundity values for each age class
#'
#' @import popbio
#'
#' @return a vector of sizes for each age class. The number of age class is deduced from the size of the 's' vector.
#' @export
#'
#' @examples
#' s <- c(0.5, 0.7, 0.8, 0.95)
#' f <- c(0, 0, 0.05, 0.55)
#' pop_vector(pop_size = 200, pop_size_type = "Npair", s, f)
#'
pop_vector <- function(pop_size, pop_size_type = "Npair", s, f){
N00 <- pop_size
# Get the LESLIE matrix
A <- build_Leslie(s, f)
if(match.arg(arg = pop_size_type, choices = c("Npair","Ntotal")) == "Npair"){
# If N0 is nb of pairs
N0 <- round(stable.stage(A) * (N00*2)/tail(stable.stage(A),1))
}else{
# If N0 is total pop size (all age classes)
if(match.arg(arg = pop_size_type, choices = c("Npair","Ntotal")) == "Ntotal"){
N0 <- round(stable.stage(A) * N00)
# Correct small difference due to rounding (not always needed)
N0[1] <- N0[1] - (sum(N0) - N00)
} # end if 2
} # end if / else 1
return(N0)
} # End of function
################################################################################