Bonjour,

J'ai créée une boucle :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
 
library(popbio)
library(dplyr)
rm(list=ls())
 
data<-read.table("DESL.txt",header=T)
 
germin <- read.table("germination.txt",h=T)
germ <- germin[,"desl"]
 
create.matrix <- function(data,germ) {
 
  matrices <- list()
 
  for (year in c(2001:2017)) {
 
    i.year <- year - 2000
 
    data1 = data[, c(i.year,i.year+1)]
 
    #Survie germination 
    sgt <- data1[which(data1[,1] == 2),] # fait la meme chose que sgt=filter(data1, X2003 == 2) mais sans besoin de spécifier le nom de la colonne
    sgt1 <- sgt[which(sgt[,2] == 3),]
    # sgt0=filter(data1, X2003 == 2)
    # sgt10=filter(sgt,X2004 == 3)
    # all(sgt==sgt0)
    # all(sgt1==sgt10)
 
    #Survie juvénile
    sjt <- data1[which(data1[,1] == 3),]
    sjt1 <- sjt[which(sjt[,2] == 3),]
    sjt11 <- sjt[which(sjt[,2] == 5),]
    sjtDeath <- sjt[which(sjt[,2] == 6),]
    # sjt0=filter(data1, X2003 == 3)
    # sjt10=filter(sjt,X2004 == 3)
    # sjt110=filter(sjt,X2004 == 5)
    # sjtDeath0=filter(sjt,X2004 == 6)
 
 
    #Survie adule non fleuri 
    sant <- data1[which(data1[,1] == 4),]
    sant1 <- sant[which(sant[,2] == 4),]
    sant11 <- sant[which(sant[,2] == 5),]
    santDeath <- sant[which(sant[,2] == 6),]
    # sant0=filter(data1, X2003 == 4)
    # sant10=filter(sant0,X2004 == 4)
    # sant110=filter(sant0,X2004 == 5)
    # santDeath0=filter(sant0,X2004 == 6)
    # all(sant == sant0)
    # all(sant1 == sant10)
    # all(sant11 == sant110)
    # all(santDeath == santDeath0)
 
    #Survie adulte fleuri
    sat <- data1[which(data1[,1] == 5),]
    sat1 <- sat[which(sat[,2] == 4),]
    sat11 <- sat[which(sat[,2] == 5),]
    satDeath <- sat[which(sat[,2] == 6),]
    # sat0=filter(data1, X2003 == 5)
    # sat10=filter(sat0,X2004 == 4)
    # sat110=filter(sat0,X2004 == 5)
    # satDeath0=filter(sat0,X2004 == 6)
 
    #Floraison juvénile 
    fjt <- data1[which(data1[,1] == 3),]
    fjt1 <- fjt[which(fjt[,2] == 5),]
    # fjt0=filter(data1, X2003 == 3)
    # fjt10=filter(fjt,X2004 == 5)
    # all(fjt == fjt0)
    # all(fjt1 == fjt10)
 
    #Floraison adulte non fleuri
    fant <- data1[which(data1[,1] == 4),]
    fant1 <- fant[which(fant[,2] == 5),]
    # fant0=filter(data1, X2003 == 4)
    # fant10=filter(fant,X2004 == 5)
    # all(fant == fant0)
    # all(fant1 == fant10)
 
    #Floraison adulte fleuri
    fat <- data1[which(data1[,1] == 5),]
    fat1 <- fat[which(fat[,2] == 5),]
    # fat0=filter(data1, X2003 == 5)
    # fat10=filter(fat,X2004 == 5)
    # all(fat == fat0)
    # all(fat1 == fat10)
 
    # #Fécondité 
    # ft=filter(data1, X2003 == 5)
 
    # Calcul des taux de survie et des taux de fécondité
    survG <- dim(sgt1)[1] / germ[i.year]
    #germt1=dim(sgt1)[1]
    survJ=(dim(sjt1)+dim(sjt11))/(dim(sjt1)+dim(sjt11)+dim(sjtDeath))
    survJ <- survJ[1]
    survV=(dim(sant1)+dim(sant11))/(dim(sant1)+dim(sant11)+dim(santDeath))
    survV <- survV[1]
    survR=(dim(sat1)+dim(sat11))/(dim(sat1)+dim(sat11)+dim(satDeath))
    survR <- survR[1]
    florJ=dim(fjt1)/(dim(sjt1)+dim(sjt11))
    florJ <- florJ[1]
    florV=dim(fant1)/(dim(sant1)+dim(sant11))
    florV <- florV[1]
    florR=dim(fat1)/(dim(sat1)+dim(sat11))
    florR <- florR[1]
 
    feco <- germ[(i.year+1)] / dim(fat)[1]
 
 
    # Calcul des élements de la matrice
    agr=feco
    ajg=survG
    ajj=survJ*(1-florJ)
    arj=survJ*florJ
    arr=survR*florR
    arv=survV*florV
    avr=survR*(1-florR)
    avv=survV*(1-florV)
 
 
    # Construction de la matrice
    # Les deux format donnent effectivement la meme chose, garde celle qu te plait le plus
    # A <- matrix(c(0,ajg,0,0,
    #             0,ajj,0,arj,
    #             0,0,avv,arv,
    #             agr,0,avr,arr),nrow=4,ncol=4)
 
    A <- matrix(c(0,0,0,agr,
                  ajg,ajj,0,0,
                  0,0,avv,avr,
                  0,arj,arv,arr),4,4,byrow=T)
 
    dimnames(A)<-list(fate=c("G","J","V","R"),state=c("G","J","V","R"))
 
    matrices[[i.year]] <- A
    names(matrices)[i.year] <- paste(year,(year+1),sep="-")
 
  }
 
   #remplacer les survie germinations (2001, 2002) et fécondité (2001)
  matrices[[1]][1,4]<-22.5958
  matrices[[1]][2,1]<-0.31105985
  matrices[[2]][2,1]<-0.31105985
 
  return(lambda(matrices[[1]]))
 
}
 
create.matrix(data,germ)
 
library(boot)
la=boot(data, create.matrix, 10)
la
boot.ci(la)
Je devrais normalement obtenir les intervalles de confiance du lambda mais ce n'est pas le cas. Je pense que cela vient des 3 valeurs que j'ai ajouté aux matrices.
J'aimerais la rajouter à la boucle mais je n'y arrive pas. J'ai essayé avec la fonction if() {} else{}.
Enfaite pour la survie germinations de 2001-2002 et 2002-2003, je dois remplacer les valeurs par la moyenne des survie germinations de 2003-2018.
Pour la fécondité, j'aimerais remplacer la valeur de 2001-2002 uniquement par la moyenne des fécondités de 2003-2018.

Est-ce possible ?
Pouvez-vous m'aider svp ?
Merci