knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" )
The goal of mullerinteran is to calculate the interannual indirect effect between two crops for one pollinator species
You can install the development version from GitHub with:
# install.packages("devtools") # devtools::install_github("LudovicCrochard/mullerinteran")
#Community matrix for 2015 and 2016 # dfcompo1516 = compo.new[-c(13:24),] # ##Decomposition of the Muller index for each crop pair 2 to 2 and pollinator # nom <- "poll_id" #Creation of the object "column name" # a = 0 #a allows to go fram one column to another # X = (nrow(dfcompo1516)*nrow(dfcompo1516)-nrow(dfcompo1516)) #Calculation the number of columns for the table of results # res <- as.data.frame(matrix(ncol=(X+1),nrow=ncol(dfcompo1516), NA)) #Creation of the results table # colnames(res) <- c(nom) #assigning the name object to the table column # # for(i in 1:nrow(dfcompo1516)){ # for(j in (i+1): (nrow(dfcompo1516-1))){ #-1 avoids the calculation of the effect of the last plant on itself # a = a+2 #go to the next column for a calculation direction # for(k in 1:ncol(dfcompo1516)){ # res[k,1] = names(dfcompo1516)[k] #allows to give pollinator's name to the line # res[k,a] = (dfcompo1516[i,k]/sum(dfcompo1516[1:6,k])*(dfcompo1516[j,k]/sum(dfcompo1516[j,]))) # res[k,a+1] = (dfcompo1516[j,k]/sum(dfcompo1516[1:6,k])*(dfcompo1516[i,k]/sum(dfcompo1516[i,]))) #calculation the effect for each pollinator # } # } # } # for(i in 1:nrow(dfcompo1516)){ # for(j in (i+1): (nrow(dfcompo1516-1))){ #-1 avoids the calculation of the effect of the last plant on itself # nom=c(nom,paste(rownames(dfcompo1516)[i],rownames(dfcompo1516)[j], sep="_")) # nom=c(nom,paste(rownames(dfcompo1516)[j],rownames(dfcompo1516)[i], sep="_")) #evolution of the name of the columns that will take the name of the association of each plant # colnames(res) <- c(nom)}} # #removal of biologically impossible effects # res1516=res[,c(2,3,4,5,6,8,9,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,47,48,50,52,54,56,58,60,63,64,65,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102)] # res1516_1=res1516 # res1516_1=as.matrix(res1516_1) # res1516_1[is.nan(res1516_1)]<-0 # res1516_1=as.data.frame(res1516_1) # res1516_1[,2:ncol(res1516_1)] <- apply(res1516_1[,2:ncol(res1516_1)], 2, as.numeric) # res1516_1[is.na(res1516_1)]<-0 # res1516_1[196,]=apply(res1516_1, 2, sum)
We wanted to transform this code into a function that can be used for any crop, year or species.
muller <- function(ab_tab, start_year = 2015, start_crop = "Cereale", end_crop = "Colza", pol = "Abia_sericea"){ #ab_tab = compo_new; start_year = 2015; start_crop = "Cereale"; end_crop = "Colza"; pol = "Abia_sericea" ## Checks if (missing(ab_tab)) { stop("Missing ab_tab.") } if (missing(start_year)) { stop("Missing start_year") } if (missing(start_crop)) { stop("Missing start_crop") } if (missing(end_crop)) { stop("Missing end_crop") } if (missing(pol)) { stop("Missing pol") } if (!is.data.frame(ab_tab)) { stop("ab_tab must be a dataframe.") } ## Compute end year end_year <- start_year + 1 ## Left nominator # Relab of pol in start_crop at start_year alpha_ij <- subset(ab_tab, Year == start_year) alpha_ij <- subset(alpha_ij, Culture == start_crop) alpha_ij <- alpha_ij[, colnames(alpha_ij) == pol] ## Right_nominator # Relab of pol in end_crop at end_year alpha_ip <- subset(ab_tab, Year == end_year) alpha_ip <- subset(alpha_ip, Culture == end_crop) alpha_ip <- alpha_ip[, colnames(alpha_ip) == pol] ## Compute the left denominator # Sum of the relab of one species on all the crops for one year pol_an <- subset(ab_tab, Year == start_year ) pol_an <- pol_an[, colnames(pol_an) == pol] sum_alpha_il <- sum(pol_an) ## Compute the right denominator # Sum of all the relab of all the species in one crop cult_an <- subset(ab_tab, Year == end_year) cult_an <- subset(cult_an, Culture == end_crop) sp_cult_an <- cult_an[grep(pattern = "_", x = colnames(cult_an))] # select the column with species relab only sum_alpha_pi <- sum(sp_cult_an) ## effect of the relab of pol on start_crop in start_year on relab of pol on end_crop in end_year d_ijp <- (alpha_ij/sum_alpha_il) * (alpha_ip/sum_alpha_pi) d_ijp } #eo muller
This is a basic example which shows you how to solve a common problem:
library(mullerinteran) ## basic example code muller(ab_tab = X, start_year = 2005, start_crop = "ipsum", end_crop = "dolor", pol = "Sit_praesent")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.