R/lengthsize.R

Defines functions lengthsize

Documented in lengthsize

#' @name lengthsize
#' 
#' @title Converts body length to body size (body weight (mg)) for three pollinating insect groups (Diptera, Hymenoptera and Lepidoptera).
#' 
#' @description Calculates body size as dry  weight (mg) from existing allometries (See 'Details') using body length values (mm).  
#' 
#' @param BL A vector of pollinator body length (BL) measurements (mm).
#' 
#' @param Eq A vector specificing which predictive allometry to use. Acronyms denote first (and second author), publication date and taxon. DIP, HYM and LEP options are cases where authors modelled body size across all specimens within each order.
#' Options implemented are: \cr 
#' \cr
#' \strong{Diptera}
#' \itemize{
#' \item                    All: BN06D, G97D, GR84D, JS00DA, R77D, S80DCF, S80DCR, S80DMF, S93DA, W13D.  
#' \item                    Brachycera (2 equations): S93DB, Sabo02DB.
#' \item                    Nematocera (3 equations): JS00DN, S93DN, Sabo02DN.
#' \item                    Asilidae (2 equations): Sabo02DA, S93DB.
#' \item                    Bombyliidae (2 equations): S93DB, Sabo02DBB.
#' \item                    Cyclorrapha: S93DC.
#'  }  
#' \strong{Hymenoptera} 
#'            \itemize{        
#' \item                    All: BN06H1, G97H, G97F, GR84H, JS00HA, R77H, S80HCF, S80HCR, S80HMF, S93HA, Sabo02H, W13H.
#' \item                    Formicidae (13 equations): BN06HF, GR84F, JS00HF, R77A, S80FCF, S80FCR, S80FMF, S93HF, S93HH, S93HI, BN06H1, G97H, G97F.
#' \item                    Apidae: Sabo02HA.
#' \item                    Braconidae: S93HB.
#' \item                    Halictidae: S93HH.
#' \item                    Ichneumonidae: S93HI.
#' \item                    Pompilidae: S93HP.
#' \item                    Vespidae: S93HV & Sabo02HV.
#'  }
#' \strong{Lepidoptera}
#'         \itemize{                 
#' \item                    All: BN06L, G97L, JS00L, R77L, S80LCF, S80LCR, S80LMF,S93LA,W13L.
#' \item                    Noctuidea: S93LC, S93LN.
#' \item                    Geometridae: S93LG.
#' \item                    Microlepidoptera: S93LM.
#' \item                    Arctiinae: S93LC.
#'  }
#' 
#' @return A dataframe with pollinator body size (mg) is returned for each species from selected equation/s.
#' 
#' @examples
#' lengthsize(BL=c(10,5,2), Eq = c("S80DCR"))
#' 
#' @references Full reference list provided within Kendall et al. (2019) Pollinator size and its consequences: Robust estimates of body size in pollinating insects. \emph{Ecology and Evolution}, 9(4), 1702-1714. \doi{10.1002/ece3.4835}.
#' 
#' @export
lengthsize=function(BL, Eq = "DIP"){
  
if(!Eq %in% c("DIP","HYM","LEP", "S93DB","Sabo02DB", "Sabo02DA", "Sabo02DBB", "R77D",
              "S93DC", "BN06D", "G97D", "GR84D", "JS00DA",
              "S80DCF", "S80DCR", "S80DMF", "S93DA", "W13D", "JS00DN", 
              "S93DN", "Sabo02DN","DIP","Brachycera","Nematocera",
              "Asilidae","Bombyliidae")){
  stop("Equation should be one of 'DIP','HYM','LEP','R77D',
       'S93DB', 'Sabo02DB', 'Sabo02DA', 'Sabo02DBB', 
       'S93DC', 'BN06D', 'G97D', 'GR84D', 'JS00DA', 
       'S80DCF', 'S80DCR', 'S80DMF', 'S93DA', 'W13D', 'JS00DN', 
       'S93DN', 'Sabo02DN','All','Brachycera','Nematocera','Asilidae','Bombyliidae'")
} else {
  S93DB <- exp(-3.374+2.158*log(BL))
  Sabo02DB <- 0.006*(BL)^3.05
  Sabo02DA <- 0.38*(BL)^1.5
  Sabo02DBB <- 0.007*(BL)^3.337
  S93DC <- exp(-3.619+2.632*log(BL))
  BN06D <- exp(-0.041+0.010*(BL))
  G97D <- exp(-3.4294+2.5943*log(BL))
  GR84D <- exp(-3.653+2.546*log(BL))
  JS00DA <- exp(-2.462+1.881*log(BL))
  R77D <- exp(-3.293+2.366*log(BL))
  S80DCF <- exp(log(0.074)+1.64*log(BL))
  S80DCR <- exp(log(0.068)+1.59*log(BL))
  S80DMF <- exp(log(0.022)+2.42*log(BL))
  S93DA <- exp(-3.184+2.23*log(BL))
  W13D <- exp(-3.29+2.65*log(BL))
  JS00DN <- exp(-2.462+1.881*log(BL))
  S93DN <- exp(-3.675+2.212*log(BL))
  Sabo02DN <- 0.1*(BL)^1.57
  Sabo02HA <- 0.006*(BL)^3.407
  S93HB <- exp(-3.854+2.441*log(BL))
  BN06HF <- exp(log(0.001)+2.33*log(BL))
  GR84F <- exp(-3.997+log(BL)*2.489)
  JS00HF <- exp(-3.730+2.103*log(BL))
  R77A <- exp(-4.029+2.572*log(BL))
  S80FCF <- exp(log(0.012)+2.72*log(BL))
  S80FCR <- exp(log(0.021)+2.31*log(BL))
  S80FMF <- exp(log(0.034)+2.19*log(BL))
  S93HF <- exp(-4.727+2.919*log(BL))
  S93HH <- exp(-2.891+2.302*log(BL))
  S93HI <- exp(-4.149+2.464*log(BL))
  BN06H1 <- exp(-6.783+2.544*log(BL))
  G97H <- exp(-3.5917+2.6429*log(BL))
  G97F <- exp(-3.1415+2.3447*log(BL))
  GR84H <- exp(-2.86+(BL)*0.478)
  JS00HA <- exp(-3.556+2.193*log(BL))
  R77H <- exp(-3.871+2.407*log(BL))
  S80HCF <- exp(log(0.043)+2.07*log(BL))
  S80HCR <- exp(log(0.022)+2.29*log(BL))
  S80HMF <- exp(log(0.016)+2.55*log(BL))
  S93HA <- exp(-4.284+2.696*log(BL))
  Sabo02H <- 0.56*(BL)^1.56
  W13H <- exp(-4.3+3*log(BL))
  S93HP <- exp(-2.341+2.006*log(BL))
  S93HV <- exp(-3.54+2.782*log(BL))
  Sabo02HV <- 0.001*(BL)^3.723
  S93LG <- exp(-4.172+2.628*log(BL))
  S93LM <- exp(-4.913+2.918*log(BL))
  BN06L <- exp(log(0.001)+2.313*log(BL))
  G97L <- exp(-4.7915+2.8585*log(BL))
  JS00L <- exp(-3.268+2.243*log(BL))
  R77L <- exp(-4.037+2.903*log(BL))
  S80LCF <- exp(log(0.026)+2.5*log(BL))
  S80LCR <- exp(log(0.078)+1.32*log(BL))
  S80LMF <- exp(log(0.014)+2.55*log(BL))
  S93LA <- exp(-5.036+3.122*log(BL))
  W13L <- exp(-3.83+2.77*log(BL))
  S93LC <- exp(-3.755+2.658*log(BL))
  S93LN <- exp(-3.337+2.499*log(BL))
  
  
  if (Eq ==  "S93DB") out <- S93DB
  if (Eq == "Sabo02DB") out <- Sabo02DB
  if (Eq == "Sabo02DA") out <- Sabo02DA
  if (Eq == "Sabo02DBB") out <- Sabo02DBB
  if (Eq == "S93DC") out <- S93DC
  if (Eq == "BN06D") out <- BN06D
  if (Eq == "G97D") out <- G97D
  if (Eq == "GR84D") out <- GR84D
  if (Eq == "JS00DA") out <- JS00DA
  if (Eq == "R77D") out <- R77D
  if (Eq == "S80DCF") out <- S80DCF
  if (Eq == "S80DCR") out <- S80DCR
  if (Eq == "S80DMF") out <- S80DMF
  if (Eq == "S93DA") out <- S93DA
  if (Eq == "W13D") out <- W13D
  if (Eq == "JS00DN") out <- JS00DN
  if (Eq == "S93DN") out <- S93DN
  if (Eq == "Sabo02DN") out <- Sabo02DN
  if (Eq == "Brachycera") out <- cbind(S93DB, Sabo02DB)
  if (Eq == "Nematocera") out <- cbind(JS00DN, S93DN, Sabo02DN)
  if (Eq == "Asilidae") out <- cbind(Sabo02DA, S93DB)
  if (Eq == "Bombyliidae") out <-cbind(Sabo02DBB,S93DB)
  if (Eq == "DIP") out <- cbind(BN06D, G97D, GR84D, JS00DA, R77D, S80DCF, S80DCR, S80DMF, S93DA, W13D)
  
  if (Eq ==  "Sabo02HA") out <- Sabo02HA
  if (Eq == "S93HB") out <- S93HB
  if (Eq == "BN06HF") out <- BN06HF
  if (Eq == "GR84F") out <- GR84F
  if (Eq == "JS00HF") out <- JS00HF
  if (Eq == "R77A") out <- R77A
  if (Eq == "S80FCF") out <- S80FCF
  if (Eq == "S80FCR") out <- S80FCR
  if (Eq == "S80FMF") out <- S80FMF
  if (Eq == "S93HF") out <- S93HF
  if (Eq == "S93HH") out <- S93HH
  if (Eq == "S93HI") out <- S93HI
  if (Eq == "BN06H1") out <- BN06H1
  if (Eq == "G97H") out <- G97H
  if (Eq == "G97F") out <- G97F
  if (Eq == "GR84H") out <- GR84H
  if (Eq == "JS00HA") out <- JS00HA
  if (Eq == "R77H") out <- R77H
  if (Eq == "S80HCF") out <- S80HCF
  if (Eq == "S80HCR") out <- S80HCR
  if (Eq == "S80HMF") out <- S80HMF
  if (Eq == "S93HA") out <- S93HA
  if (Eq == "Sabo02H") out <- Sabo02H
  if (Eq == "W13H") out <- W13H
  if (Eq == "S93HP") out <- S93HP
  if (Eq == "S93HV") out <- S93HV
  if (Eq == "Sabo02HV") out <- Sabo02HV
  if (Eq == "Vespidae") out <- cbind(S93HV,Sabo02HV)
  if (Eq == "Formicidae") out <- cbind(BN06HF,GR84F,JS00HF,R77A,S80FCF,S80FCR,S80FMF,S93HF,S93HH,S93HI,BN06H1,G97H,G97F)
  if (Eq == "HYM") out = cbind(BN06H1,G97H, G97F,GR84H,JS00HA,R77H,S80HCF,S80HCR,S80HMF,S93HA,Sabo02H,W13H)
  
  if (Eq ==  "S93LG") out <- S93LG
  if (Eq == "S93LM") out <- S93LM
  if (Eq == "BN06L") out <- BN06L
  if (Eq == "G97L") out <- G97L
  if (Eq == "JS00L") out <- JS00L
  if (Eq == "R77L") out <- R77L
  if (Eq == "S80LCF") out <- S80LCF
  if (Eq == "S80LCR") out <- S80LCR
  if (Eq == "S80LMF") out <- S80LMF
  if (Eq == "S93LA") out <- S93LA
  if (Eq == "W13L") out <- W13L
  if (Eq == "S93LC") out <- S93LC
  if (Eq == "S93LN") out <- S93LN
  if (Eq == "LEP") out <- cbind(BN06L,G97L,JS00L,R77L,S80LCF, S80LCR,S80LMF,S93LA,W13L)
  if (Eq == "Noctuidea") out <- cbind(S93LC, S93LN)
  out
}
}  
liamkendall/pollimetry documentation built on April 28, 2023, 2:09 a.m.