Appendix A. Instructions for resuming the calculations of this paper in R.
In your working directory, copy the file 'birds.txt' (Supplement 1). Then, write the following instructions on your R console (be careful the library ade4 must be previously downloaded from CRAN):
library(ade4)
ecoconv <- read.table("birds.txt", h = TRUE, row.names = 1)
names(ecoconv)
[1] "Alg1" "Alg2" "Alg3" "Alg4" "Alg5" "Alg6" "Bur1" "Bur2" "Bur3" "Bur4"
[11] "Bur5" "Bur6" "Cor1" "Cor2" "Cor3" "Cor4" "Cor5" "Cor6" "Pol1" "Pol2"
[21] "Pol3" "Pol4" "Pol5" "Pol6" "Pro1" "Pro2" "Pro3" "Pro4" "Pro5" "Pro6"
The object 'ecoconv' is the global species × site matrix. The notations are: 'Alg' Algeria, 'Bur' Burgundy, 'Cor' Corsica, 'Pol' Poland, 'Pro' Provence, and from 1-low bush to 6-preforest for the vegetation stages.
From the global matrix, obtain two lists of individual matrices:
The following object 'list1' contains the list of the five species × stage matrices.
list1 <- list(Alg = ecoconv[, 1:6], Bur = ecoconv[, 7:12], Cor =
ecoconv[, 13:18], Pol = ecoconv[, 19:24], Pro = ecoconv[, 25:30])
names(list1$Alg) <- c("S1", "S2", "S3", "S4", "S5", "S6")
names(list1$Bur) <- c("S1", "S2", "S3", "S4", "S5", "S6")
names(list1$Cor) <- c("S1", "S2", "S3", "S4", "S5", "S6")
names(list1$Pol) <- c("S1", "S2", "S3", "S4", "S5", "S6")
names(list1$Pro) <- c("S1", "S2", "S3", "S4", "S5", "S6")
list2 <- list(S1 = ecoconv[, c(1, 7, 13, 19, 25)],
S2 = ecoconv[, c(2, 8, 14, 20, 26)],
S3 = ecoconv[, c(3, 9, 15, 21, 27)],
S4 = ecoconv[, c(4, 10, 16, 22, 28)],
S5 = ecoconv[, c(5, 11, 17, 23, 29)],
S6 = ecoconv[, c(6, 12, 18, 24, 30)])
names(list2$S1) <- c("Alg", "Bur", "Cor", "Pol", "Pro")
names(list2$S2) <- c("Alg", "Bur", "Cor", "Pol", "Pro")
names(list2$S3) <- c("Alg", "Bur", "Cor", "Pol", "Pro")
names(list2$S4) <- c("Alg", "Bur", "Cor", "Pol", "Pro")
names(list2$S5) <- c("Alg", "Bur", "Cor", "Pol", "Pro")
names(list2$S6) <- c("Alg", "Bur", "Cor", "Pol", "Pro")
# Obtaining Fig. 2
fouc1 <- foucart(list1, scan = F, nf = 2)
Eigenvalue barplot:
barplot(fouc1$eig)

Reference pattern:
s.label(fouc1$li, clab=0)
s.label(fouc1$co, clab=1, add.pl=T)

Projection of the individual matrices:
kplot(fouc1, clab.c = 1.5, clab.r = 0, csub = 2)

# Obtaining Fig. 3:
fouc2 <- foucart(list2, scan = F, nf = 4)
Eigenvalue barplot:
barplot(fouc2$eig)
kplot(fouc2, clab.c = 1.5, clab.r = 0, csub = 1)

# Obtaining Fig. 4:
rownames(fouc2$Tco)
[1] "Alg.1" "Bur.1" "Cor.1" "Pol.1" "Pro.1" "Alg.2" "Bur.2" "Cor.2"
[9] "Pol.2" "Pro.2" "Alg.3" "Bur.3" "Cor.3" "Pol.3" "Pro.3" "Alg.4"
[17] "Bur.4" "Cor.4" "Pol.4" "Pro.4" "Alg.5" "Bur.5" "Cor.5" "Pol.5"
[25] "Pro.5" "Alg.6" "Bur.6" "Cor.6" "Pol.6" "Pro.6"
Factorial map F1 × F2:
par.sauv <- par()$mar
par(mar=c(0.1,0.1,0.1,0.1))
s.label(fouc2$Tco, clab = 0.8)
for(i in 0:5) {
index <- (1:5) + 5 * i
transi <- chull(fouc2$Tco[index, ])
transi <- index[c(transi, transi[1])]
lines(fouc2$Tco[transi, ], lty = i + 1)
}

