cocc<-read.table("British_ladybirds.txt",header=TRUE) head(cocc) Number_of_species<-nrow(cocc) Number_of_species Number_of_genera<-length(levels(cocc$Genus)) Number_of_genera # rowSums(table(cocc)) species_per_genus<-as.data.frame(rowSums(table(cocc))) # species_per_genus a<-sort(sample(c(2:Number_of_species),Number_of_genera-1)) c<-a-0.5 hold<-floor(c[1]) for(i in 1:length(c)-1) hold<-c(hold,c[i+1]-c[i]) hold<-c(hold,Number_of_species-floor(c[i+1])) plot(NULL, ylim=c(0,100),xlim=c(-0,Number_of_species+1),axes=FALSE,ylab="",xlab="") rug(0:53,ticksize = 0.03, side = 1, lwd = 0.5) rug(c(5,10,15,20,25,30,35,40,45,50),ticksize = 0.05, side = 1, lwd = 2,line=0.5,lend="square") twocolours<-c(rep(c("red","yellow"),1+Number_of_genera/2)) remember<-NULL for(j in 1:100){ a<-sort(sample(c(2:Number_of_species),Number_of_genera-1)) c<-a-0.5 hold<-floor(c[1]) for(i in 1:length(c)-1){ hold<-c(hold,c[i+1]-c[i]) }#i hold<-c(hold,Number_of_species-floor(c[i+1])) m<-0 for(i in 1:Number_of_genera){ lines(c(m,cumsum(hold)[i]),c(j,j),lwd=3.5,col=twocolours[i],lend="square") m<-cumsum(hold)[i] } remember<-rbind(remember,hold) }#j ############ vectorized approach optional - not an example used in book remv<-NULL for(j in 1:100){ a<-sort(sample(c(2:Number_of_species-1),Number_of_genera-1)) upper_values<-c(a,Number_of_species) lower_values<-c(0,a) remv<-rbind(remv,upper_values-lower_values) } #j # plotting the results of vectorized approach in a separate loop plot(NULL, ylim=c(0,100),xlim=c(-0,Number_of_species+1),axes=FALSE,ylab="",xlab="") rug(0:53,ticksize = 0.03, side = 1, lwd = 0.5) rug(c(5,10,15,20,25,30,35,40,45,50),ticksize = 0.05, side = 1, lwd = 2,line=0.5,lend="square") twocolours<-c(rep(c("seagreen","hotpink1"),1+Number_of_genera/2)) for(j in 1:100){ m<-0 for(i in 1:Number_of_genera){ lines(c(m,sum(remv[j,1:i])),c(j,j),lwd=3.5,col=twocolours[i],lend="square") m<-sum(remv[j,1:i]) } #i } #j