Rutils/maybe-not-useful/taxonutils.r

#==========================================================================================#
#==========================================================================================#
#     Global variables to define plant properties.                                         #
#------------------------------------------------------------------------------------------#
mypfts     <<- c(2,3,4)
pft.dens   <<- c(0.53,0.71,0.90)
pft.names  <<- c("Early tropical","Mid tropical","Late tropical")
n.pfts     <<- length(mypfts)
pft.breaks <<- c(-Inf,pft.dens[2:n.pfts]-0.5*diff(pft.dens),Inf)
#------------------------------------------------------------------------------------------#





#==========================================================================================#
#==========================================================================================#
#      This function standardises the spelling of common names of trees.  Based on         #
# Santarem survey,  but feel free to add more.                                             #
#------------------------------------------------------------------------------------------#
standard.common.name <<- function(x){
   #----- Make sure common names are lower case. ------------------------------------------#
   x   = tolower(x)
   #---------------------------------------------------------------------------------------#



   #---------------------------------------------------------------------------------------#
   #     General substitutions.  These are very aggressive, so don't use it too much.      #
   # Good things to put here are names that are often misspelt.  It's wise to use regexpr  #
   # rules such as ^ and $ to make sure gsub won't substitute more than it is supposed to. #
   #---------------------------------------------------------------------------------------#
   x = gsub(pattern="^abiuarana"      ,replacement="abiurana"    ,x=x)
   x = gsub(pattern="^angelin"        ,replacement="angelim"     ,x=x)
   x = gsub(pattern="^axicha"         ,replacement="axixa"       ,x=x)
   x = gsub(pattern="^jaracatia"      ,replacement="jacaratia"   ,x=x)
   x = gsub(pattern="^mara mara"      ,replacement="maramara"    ,x=x)
   x = gsub(pattern="^mara-mara"      ,replacement="maramara"    ,x=x)
   x = gsub(pattern="^mata mata"      ,replacement="matamata"    ,x=x)
   x = gsub(pattern="^mata-mata"      ,replacement="matamata"    ,x=x)
   x = gsub(pattern="^moratinga"      ,replacement="muiratinga"  ,x=x)
   x = gsub(pattern="^muiracatiara"   ,replacement="maracatiara" ,x=x)
   x = gsub(pattern="^muiraitinga"    ,replacement="muiratinga"  ,x=x)
   x = gsub(pattern="^muiriatinga"    ,replacement="muiratinga"  ,x=x)
   x = gsub(pattern="^muracatiara"    ,replacement="maracatiara" ,x=x)
   x = gsub(pattern="^muratinga"      ,replacement="muiratinga"  ,x=x)
   x = gsub(pattern="^murici"         ,replacement="muruci"      ,x=x)
   x = gsub(pattern="^mutuxi"         ,replacement="mututi"      ,x=x)
   x = gsub(pattern="muida$"          ,replacement="miuda"       ,x=x)
   x = gsub(pattern="^ocooba"         ,replacement="ucuuba"      ,x=x)
   x = gsub(pattern="^ocuuba"         ,replacement="ucuuba"      ,x=x)
   x = gsub(pattern="^papa terra"     ,replacement="papa-terra"  ,x=x)
   x = gsub(pattern="^papaterra"      ,replacement="papa-terra"  ,x=x)
   x = gsub(pattern="^para para"      ,replacement="parapara"    ,x=x)
   x = gsub(pattern="^para-para"      ,replacement="parapara"    ,x=x)
   x = gsub(pattern="^quina quina"    ,replacement="quinaquina"  ,x=x)
   x = gsub(pattern="^quina-quina"    ,replacement="quinaquina"  ,x=x)
   x = gsub(pattern="^tamarino"       ,replacement="tamarindo"   ,x=x)
   x = gsub(pattern="^taxi"           ,replacement="tachi"       ,x=x)
   x = gsub(pattern="^uchi"           ,replacement="uxi"         ,x=x)
   x = gsub(pattern="verdadiera"      ,replacement="verdadeira"  ,x=x)
   x = gsub(pattern="^xixua"          ,replacement="chichua"     ,x=x)
   #---------------------------------------------------------------------------------------#



   #----- Full replacements. --------------------------------------------------------------#
   sel = (x %in% "?"                             ); x[sel] = NA_character_
   sel = (x %in% "abacaba"                       ); x[sel] = "bacaba"
   sel = (x %in% "abicuiba"                      ); x[sel] = "ucuuba"
   sel = (x %in% "abirana rosadinha"             ); x[sel] = "abiu rosadinho"
   sel = (x %in% "abiui"                         ); x[sel] = "abiu"
   sel = (x %in% "abiu acariquara"               ); x[sel] = "abiu-acariquara"
   sel = (x %in% "abiu cramuri"                  ); x[sel] = "abiu-cramuri"
   sel = (x %in% "abiu cutite"                   ); x[sel] = "abiu-cutite"
   sel = (x %in% "abiu cutite folha verde"       ); x[sel] = "abiu-cutite"
   sel = (x %in% "abiu cutiti"                   ); x[sel] = "abiu-cutite"
   sel = (x %in% "abiu-cutiti"                   ); x[sel] = "abiu-cutite"
   sel = (x %in% "abiu guajara"                  ); x[sel] = "abiu-guajara"
   sel = (x %in% "abiu goiabao"                  ); x[sel] = "abiu-goiabao"
   sel = (x %in% "abiu mangabinha"               ); x[sel] = "abiu-mangabinha"
   sel = (x %in% "abiu tauari"                   ); x[sel] = "tauari"
   sel = (x %in% "abiu vermelha"                 ); x[sel] = "abiu vermelho"
   sel = (x %in% "abiurana vermelho"             ); x[sel] = "abiurana vermelha"
   sel = (x %in% "abiurana vermlho"              ); x[sel] = "abiurana vermelha"
   sel = (x %in% "abiuarana"                     ); x[sel] = "abiurana"
   sel = (x %in% "abiurana rosadinha"            ); x[sel] = "abiu rosadinho"
   sel = (x %in% "acoita cavalo"                 ); x[sel] = "acoita-cavalo"
   sel = (x %in% "algodao brabo"                 ); x[sel] = "algodao-bravo"
   sel = (x %in% "algodao bravo"                 ); x[sel] = "algodao-bravo"
   sel = (x %in% "amalelinha"                    ); x[sel] = "amarelinho"
   sel = (x %in% "amapa tirana"                  ); x[sel] = "amapatirana"
   sel = (x %in% "amarelinha"                    ); x[sel] = "amarelinho"
   sel = (x %in% "ameixa"                        ); x[sel] = "ameixa-do-para"
   sel = (x %in% "amerelinho"                    ); x[sel] = "amarelinho"
   sel = (x %in% "amescla"                       ); x[sel] = "breu mescla"
   sel = (x %in% "amoninha"                      ); x[sel] = "mamoninha"
   sel = (x %in% "ananin"                        ); x[sel] = "anani"
   sel = (x %in% "angelim aroreira"              ); x[sel] = "angelim-aroeira"
   sel = (x %in% "angelim aroeira"               ); x[sel] = "angelim-aroeira"
   sel = (x %in% "angelim margoso"               ); x[sel] = "angelim amargoso"
   sel = (x %in% "angelim pedra"                 ); x[sel] = "angelim-pedra"
   sel = (x %in% "angelim pedro"                 ); x[sel] = "angelim-pedra"
   sel = (x %in% "angelim peroba"                ); x[sel] = "angelim-pedra"
   sel = (x %in% "apuii"                         ); x[sel] = "apui"
   sel = (x %in% "aquariquara"                   ); x[sel] = "acariquara" 
   sel = (x %in% "aquariquarana"                 ); x[sel] = "acariquarana"
   sel = (x %in% "araca nego"                    ); x[sel] = "araca"
   sel = (x %in% "araca de anta"                 ); x[sel] = "araca-de-anta"
   sel = (x %in% "aratacio"                      ); x[sel] = "arataciu"
   sel = (x %in% "araticu"                       ); x[sel] = "araticum"
   sel = (x %in% "ata-menju"                     ); x[sel] = "atameju"
   sel = (x %in% "bacaba de leque"               ); x[sel] = "bacaba-de-leque"
   sel = (x %in% "bacabinha"                     ); x[sel] = "bacabi"
   sel = (x %in% "bacupari"                      ); x[sel] = "bacuripari"
   sel = (x %in% "bacuri-pari"                   ); x[sel] = "bacuripari"
   sel = (x %in% "bacuri pari"                   ); x[sel] = "bacuripari"
   sel = (x %in% "barbatimao"                    ); x[sel] = "fava-barbatimao"
   sel = (x %in% "bate puta"                     ); x[sel] = "batiputa"
   sel = (x %in% "baubarana"                     ); x[sel] = "embaubarana"
   sel = (x %in% "breu/louro preto?"             ); x[sel] = NA_character_
   sel = (x %in% "babao"                         ); x[sel] = "macauba"
   sel = (x %in% "bolao"                         ); x[sel] = "fava-bolota"
   sel = (x %in% "bombeira"                      ); x[sel] = "pau-pombo"
   sel = (x %in% "brau"                          ); x[sel] = "breu"
   sel = (x %in% "brejauba"                      ); x[sel] = "brejauva"              
   sel = (x %in% "breu sucuuba"                  ); x[sel] = "breu sucuruba"         
   sel = (x %in% "cabeca de urubu"               ); x[sel] = "cabeca-de-urubu"       
   sel = (x %in% "cabela"                        ); x[sel] = "louro canela"          
   sel = (x %in% "cabriuva"                      ); x[sel] = "cabreuva"              
   sel = (x %in% "cabriuna"                      ); x[sel] = "cabreuva"              
   sel = (x %in% "cabreu"                        ); x[sel] = "cabreuva"              
   sel = (x %in% "cabreuba"                      ); x[sel] = "cabreuva"              
   sel = (x %in% "caca piolho"                   ); x[sel] = "mata-piolho"           
   sel = (x %in% "cacau bravo"                   ); x[sel] = "cacaui"                
   sel = (x %in% "cacau da mata"                 ); x[sel] = "cacau"  
   sel = (x %in% "cacaurana"                     ); x[sel] = "cacau"                 
   sel = (x %in% "cachudinha"                    ); x[sel] = "cascudinha"            
   sel = (x %in% "cagaca"                        ); x[sel] = "abiurana-cagaca"
   sel = (x %in% "cajarana"                      ); x[sel] = "jarana"                
   sel = (x %in% "caju acu"                      ); x[sel] = "cajuacu"
   sel = (x %in% "cajuba"                        ); x[sel] = "caju"
   sel = (x %in% "calcho"                        ); x[sel] = "caucho"                
   sel = (x %in% "canafistula"                   ); x[sel] = "fava-marimari"
   sel = (x %in% "canela brava"                  ); x[sel] = "catuaba"
   sel = (x %in% "canela de anta"                ); x[sel] = "canela-de-anta"        
   sel = (x %in% "canela de veado"               ); x[sel] = "canela-de-veado"       
   sel = (x %in% "canela de velho"               ); x[sel] = "canela-de-velho"       
   sel = (x %in% "canelha velha"                 ); x[sel] = "canela-de-velho"       
   sel = (x %in% "canela de jacamim"             ); x[sel] = "canela-de-jacamim"     
   sel = (x %in% "canella de jacami"             ); x[sel] = "canela-de-jacamim"     
   sel = (x %in% "canella ge jacami"             ); x[sel] = "canela-de-jacamim"     
   sel = (x %in% "canniela"                      ); x[sel] = "canela"                
   sel = (x %in% "capa bode"                     ); x[sel] = "capa-bode"
   sel = (x %in% "capoeiro"                      ); x[sel] = "capueiro"
   sel = (x %in% "capoeiro preto"                ); x[sel] = "capueiro preto"
   sel = (x %in% "capoeiro branco"               ); x[sel] = "capueiro"
   sel = (x %in% "captiurana"                    ); x[sel] = "capitiurana"
   sel = (x %in% "capueiro branco"               ); x[sel] = "capueiro"
   sel = (x %in% "caqui branco"                  ); x[sel] = "caqui"
   sel = (x %in% "caqui folha grande"            ); x[sel] = "caqui"
   sel = (x %in% "carobia"                       ); x[sel] = "caroba"                
   sel = (x %in% "cascudinho"                    ); x[sel] = "cascudinha"            
   sel = (x %in% "cascudo"                       ); x[sel] = "cascudinha"            
   sel = (x %in% "castanha do brasil"            ); x[sel] = "castanha-do-para"
   sel = (x %in% "castanha do para"              ); x[sel] = "castanha-do-para"
   sel = (x %in% "castanha"                      ); x[sel] = "castanha-do-para"
   sel = (x %in% "castanheiro"                   ); x[sel] = "castanha-do-para"
   sel = (x %in% "castanha de galinha"           ); x[sel] = "castanha-de-galinha"   
   sel = (x %in% "castanha de periquito"         ); x[sel] = "castanha-de-periquito" 
   sel = (x %in% "castanha de sapocaia"          ); x[sel] = "castanha-sapucaia"     
   sel = (x %in% "castanha de sapucaia"          ); x[sel] = "castanha-sapucaia"     
   sel = (x %in% "castanha sapocaia"             ); x[sel] = "castanha-sapucaia"     
   sel = (x %in% "castanheira"                   ); x[sel] = "castanha-do-para"      
   sel = (x %in% "cauba"                         ); x[sel] = "macacauba"
   sel = (x %in% "cauxo"                         ); x[sel] = "caucho"                
   sel = (x %in% "caxeta"                        ); x[sel] = "caixeta"               
   sel = (x %in% "caxicha"                       ); x[sel] = "caxixa"           
   sel = (x %in% "caximbeira"                    ); x[sel] = "cachimbeiro"           
   sel = (x %in% "caximbeiro"                    ); x[sel] = "cachimbeiro"           
   sel = (x %in% "caxudinha"                     ); x[sel] = "cascudinha"            
   sel = (x %in% "cedroarana"                    ); x[sel] = "cedrorana"
   sel = (x %in% "cega jumenta"                  ); x[sel] = "cega-jumento"
   sel = (x %in% "chamaecrista"                  ); x[sel] = "coracao-de-negro"
   sel = (x %in% "chapeu de sol"                 ); x[sel] = "chapeu-de-sol"
   sel = (x %in% "chocolate"                     ); x[sel] = "cacau"                 
   sel = (x %in% "cip"                           ); x[sel] = "cipo"
   sel = (x %in% "cipo(dbh a 0.9m do chao)"      ); x[sel] = "cipo"
   sel = (x %in% "cipo+arapo"                    ); x[sel] = "cipo"
   sel = (x %in% "coco pau"                      ); x[sel] = "coco-pau"
   sel = (x %in% "comida de jaboti"              ); x[sel] = "comida-de-jabuti"      
   sel = (x %in% "comida de jabuti"              ); x[sel] = "comida-de-jabuti"      
   sel = (x %in% "comida de pomba"               ); x[sel] = "comida-de-pombo"       
   sel = (x %in% "comida de pombo"               ); x[sel] = "comida-de-pombo"       
   sel = (x %in% "coracao  de negro"             ); x[sel] = "coracao-de-negro"      
   sel = (x %in% "coracao de nego"               ); x[sel] = "coracao-de-negro"      
   sel = (x %in% "coracao de negro"              ); x[sel] = "coracao-de-negro"      
   sel = (x %in% "corante de indio"              ); x[sel] = "urucum"                
   sel = (x %in% "coro preto"                    ); x[sel] = "louro preto"           
   sel = (x %in% "coussarea racemosa"            ); x[sel] = "caferana"              
   sel = (x %in% "crista de mutum"               ); x[sel] = "crista"  
   sel = (x %in% "cucutiteriba"                  ); x[sel] = "cucutitiriba"
   sel = (x %in% "cumari"                        ); x[sel] = "cumaru"                
   sel = (x %in% "cumaru/apui"                   ); x[sel] = "apui"                  
   sel = (x %in% "cumaru de ferro"               ); x[sel] = "cumaru-ferro"          
   sel = (x %in% "cumatezinho/goiabinha fm"      ); x[sel] = "cumatezinho"           
   sel = (x %in% "cupiu"                         ); x[sel] = "cupui"
   sel = (x %in% "cupuacu da mata"               ); x[sel] = "cupuacu-da-mata"
   sel = (x %in% "cutiti"                        ); x[sel] = "abiu cutite"
   sel = (x %in% "cutiti"                        ); x[sel] = "abiu cutite"
   sel = (x %in% "cutite"                        ); x[sel] = "abiu cutite"
   sel = (x %in% "cutiteriba"                    ); x[sel] = "cucutitiriba"
   sel = (x %in% "cutitiriba"                    ); x[sel] = "cucutitiriba"
   sel = (x %in% "cruzeiro"                      ); x[sel] = "quina-cruzeiro"
   sel = (x %in% "dulacia/cachaceira"            ); x[sel] = "cachaceiro"
   sel = (x %in% "dulacia/cachaceira"            ); x[sel] = "cachaceiro"
   sel = (x %in% "einvira preta"                 ); x[sel] = "envira preta" 
   sel = (x %in% "embauba branco"                ); x[sel] = "embauba branca"        
   sel = (x %in% "embauba vick"                  ); x[sel] = "embauba"               
   sel = (x %in% "embauba torem"                 ); x[sel] = "embauba toren"  
   sel = (x %in% "embirata"                      ); x[sel] = "envira ata"            
   sel = (x %in% "embireira branca"              ); x[sel] = "envira"                
   sel = (x %in% "embireira rosa"                ); x[sel] = "envira"                
   sel = (x %in% "envira biriba"                 ); x[sel] = "envira-biriba"         
   sel = (x %in% "envira cana"                   ); x[sel] = "envira-cana"           
   sel = (x %in% "envira cabo de rodo"           ); x[sel] = "envira cabo-de-rodo"   
   sel = (x %in% "envira caju"                   ); x[sel] = "envira-caju"           
   sel = (x %in% "envira conduru"                ); x[sel] = "envira-conduru"        
   sel = (x %in% "envira cunauaru"               ); x[sel] = "envira-cunauaru"       
   sel = (x %in% "envira-mao-de-onca"            ); x[sel] = "envira mao-de-onca"    
   sel = (x %in% "envira preto"                  ); x[sel] = "envira preta"          
   sel = (x %in% "envira quiabo"                 ); x[sel] = "axixa"
   sel = (x %in% "envira-quiabo"                 ); x[sel] = "axixa"
   sel = (x %in% "envira sombrera"               ); x[sel] = "envira-sombreiro"
   sel = (x %in% "envira sombreira"              ); x[sel] = "envira-sombreiro"
   sel = (x %in% "envira sombreiro"              ); x[sel] = "envira-sombreiro"
   sel = (x %in% "envira surucu"                 ); x[sel] = "envira-surucucu"
   sel = (x %in% "envira surucucu"               ); x[sel] = "envira-surucucu"
   sel = (x %in% "envira taia"                   ); x[sel] = "envira-taia"           
   sel = (x %in% "envira turi"                   ); x[sel] = "envira-turi"
   sel = (x %in% "envira turi duro"              ); x[sel] = "envira-turi"
   sel = (x %in% "envira vermelho"               ); x[sel] = "envira vermelha"       
   sel = (x %in% "envireira"                     ); x[sel] = "envira"       
   sel = (x %in% "escorrega macaco"              ); x[sel] = "escorrega-macaco"      
   sel = (x %in% "escurrega macaco"              ); x[sel] = "escorrega-macaco"      
   sel = (x %in% "espeturana f. g."              ); x[sel] = "espeturana"            
   sel = (x %in% "fava amarg"                    ); x[sel] = "fava amargosa"
   sel = (x %in% "fava arara"                    ); x[sel] = "fava-arara-tucupi"
   sel = (x %in% "fava arara tucupi"             ); x[sel] = "fava-arara-tucupi"     
   sel = (x %in% "fava atana"                    ); x[sel] = "fava-atana"
   sel = (x %in% "fiora preta"                   ); x[sel] = NA_character_
   sel = (x %in% "fava barbatimao"               ); x[sel] = "fava-barbatimao"       
   sel = (x %in% "fava bolacha"                  ); x[sel] = "fava-bolacha"          
   sel = (x %in% "fava bolota"                   ); x[sel] = "fava-bolota"           
   sel = (x %in% "fava cana"                     ); x[sel] = "fava-cana"           
   sel = (x %in% "fava core"                     ); x[sel] = "fava-core"           
   sel = (x %in% "fava de anta"                  ); x[sel] = "fava-de-anta"          
   sel = (x %in% "fava marimari"                 ); x[sel] = "fava-marimari"         
   sel = (x %in% "fava mapuxique"                ); x[sel] = "fava-mapuxiqui"        
   sel = (x %in% "fava mapuxiqui"                ); x[sel] = "fava-mapuxiqui"        
   sel = (x %in% "fava orelha de macaco"         ); x[sel] = "fava orelha-de-macaco" 
   sel = (x %in% "fava paricarana"               ); x[sel] = "fava-paricana"         
   sel = (x %in% "fava saboeira"                 ); x[sel] = "fava-saboeira"         
   sel = (x %in% "fava tambori"                  ); x[sel] = "fava-tamboril"         
   sel = (x %in% "fava tamburi"                  ); x[sel] = "fava-tamboril"         
   sel = (x %in% "fava tamboril"                 ); x[sel] = "fava-tamboril" 
   sel = (x %in% "fava tamboriu"                 ); x[sel] = "fava-tamboril"  
   sel = (x %in% "favera amargosa"               ); x[sel] = "fava amargosa"         
   sel = (x %in% "faveira branca"                ); x[sel] = "fava branca"           
   sel = (x %in% "feijo branco"                  ); x[sel] = "freijo branco"         
   sel = (x %in% "ferdinandusa elliptica"        ); x[sel] = "bacabinha quina"       
   sel = (x %in% "figado de preguisa"            ); x[sel] = "figado-de-preguica"
   sel = (x %in% "figueira brava"                ); x[sel] = "figueira"              
   sel = (x %in% "gameleiro"                     ); x[sel] = "gameleira"             
   sel = (x %in% "gapeba"                        ); x[sel] = "guapeva"               
   sel = (x %in% "guapeba"                       ); x[sel] = "guapeva"               
   sel = (x %in% "gema de ovo"                   ); x[sel] = "gema-de-ovo"           
   sel = (x %in% "geniparana"                    ); x[sel] = "jeniparana"            
   sel = (x %in% "genipapo"                      ); x[sel] = "jenipapo"              
   sel = (x %in% "goiaba"                        ); x[sel] = "araca"
   sel = (x %in% "goiaba de anta"                ); x[sel] = "goiaba-de-anta"
   sel = (x %in% "goibarana"                     ); x[sel] = "goiabarana"            
   sel = (x %in% "gombeira fg"                   ); x[sel] = "gombeira folha grande"
   sel = (x %in% "gombeira vermelho"             ); x[sel] = "gombeira vermelha"     
   sel = (x %in% "grao de galo"                  ); x[sel] = "grao-de-galo"          
   sel = (x %in% "grao de guariba"               ); x[sel] = "grao-de-guariba"       
   sel = (x %in% "grao de macaco"                ); x[sel] = "grao-de-guariba" 
   sel = (x %in% "gravilola brava"               ); x[sel] = "graviola-brava"        
   sel = (x %in% "graviola brava"                ); x[sel] = "graviola-brava"        
   sel = (x %in% "guaiba"                        ); x[sel] = "araca"                 
   sel = (x %in% "guaiaba"                       ); x[sel] = "araca"
   sel = (x %in% "guajara bolacha"               ); x[sel] = "guajara-bolacha"       
   sel = (x %in% "guajara ferro"                 ); x[sel] = "guajara-ferro"         
   sel = (x %in% "guajara pedra"                 ); x[sel] = "guajara-pedra"         
   sel = (x %in% "guajara mirim"                 ); x[sel] = "guajara-mirim"         
   sel = (x %in% "guariuva"                      ); x[sel] = "guariuba"              
   sel = (x %in% "guaruba"                       ); x[sel] = "quaruba"
   sel = (x %in% "ibirucu"                       ); x[sel] = "embirucu"              
   sel = (x %in% "imbauba torem"                 ); x[sel] = "embauba toren"         
   sel = (x %in% "imbirata"                      ); x[sel] = "envira ata"            
   sel = (x %in% "imbireira"                     ); x[sel] = "envira"                
   sel = (x %in% "imbireira rosa"                ); x[sel] = "envira"                
   sel = (x %in% "imbiricu"                      ); x[sel] = "embirucu"              
   sel = (x %in% "imbirucu"                      ); x[sel] = "embirucu"              
   sel = (x %in% "inga a"                        ); x[sel] = "inga"
   sel = (x %in% "inga amarela"                  ); x[sel] = "inga amarelo"
   sel = (x %in% "inga branca"                   ); x[sel] = "inga branco"           
   sel = (x %in% "inga chichica"                 ); x[sel] = "inga-xixica"           
   sel = (x %in% "inga de orelha"                ); x[sel] = "inga-de-orelha"        
   sel = (x %in% "inga de preguica"              ); x[sel] = "inga-de-preguica"      
   sel = (x %in% "inga de rodo"                  ); x[sel] = "inga-de-rodo"          
   sel = (x %in% "inga de rosca"                 ); x[sel] = "inga-de-rosca"         
   sel = (x %in% "inga f g"                      ); x[sel] = "inga folha grauda"
   sel = (x %in% "inga f.p."                     ); x[sel] = "inga folha peluda"     
   sel = (x %in% "inga folha grande"             ); x[sel] = "inga folha grauda"
   sel = (x %in% "inga folhao"                   ); x[sel] = "inga folha grauda"
   sel = (x %in% "inga peluda"                   ); x[sel] = "inga peludo"         
   sel = (x %in% "inga titica"                   ); x[sel] = "inga-xixica"           
   sel = (x %in% "inga vermelha"                 ); x[sel] = "inga vermelho"         
   sel = (x %in% "inga xixica"                   ); x[sel] = "inga-xixica"           
   sel = (x %in% "ipe amerelo"                   ); x[sel] = "ipe amarelo"           
   sel = (x %in% "jaboticaba"                    ); x[sel] = "jabuticaba"            
   sel = (x %in% "jacare"                        ); x[sel] = "pau-jacare"
   sel = (x %in% "jacariuba"                     ); x[sel] = "jacareuba"
   sel = (x %in% "jambo"                         ); x[sel] = "jambo-do-mato"
   sel = (x %in% "jara"                          ); x[sel] = "jarana"
   sel = (x %in% "jaruma"                        ); x[sel] = "taruma"
   sel = (x %in% "jauari"                        ); x[sel] = "tauari"
   sel = (x %in% "jenita"                        ); x[sel] = "janita"                
   sel = (x %in% "jito"                          ); x[sel] = "gito"
   sel = (x %in% "joao mole"                     ); x[sel] = "joao-mole"             
   sel = (x %in% "joao moleza"                   ); x[sel] = "joao-moleza"           
   sel = (x %in% "jotobazinho"                   ); x[sel] = "jatobazinho"           
   sel = (x %in% "jutai mirim"                   ); x[sel] = "jutai-mirim"           
   sel = (x %in% "jutai acu"                     ); x[sel] = "jutai-acu"             
   sel = (x %in% "jutai pororoca"                ); x[sel] = "jutai-pororoca"        
   sel = (x %in% "lacre da mata"                 ); x[sel] = "lacre-da-mata"         
   sel = (x %in% "laranginha"                    ); x[sel] = "laranjinha"            
   sel = (x %in% "leiteiro"                      ); x[sel] = "leiteira"              
   sel = (x %in% "leitera"                       ); x[sel] = "leiteira"              
   sel = (x %in% "loro amarelo"                  ); x[sel] = "louro amarelo"         
   sel = (x %in% "louro?"                        ); x[sel] = "louro"
   sel = (x %in% "louro abacate"                 ); x[sel] = "louro-abacate"         
   sel = (x %in% "louro aritu"                   ); x[sel] = "louro-aritu"           
   sel = (x %in% "louro branco"                  ); x[sel] = "louro"                 
   sel = (x %in% "louro bosta"                   ); x[sel] = "louro-bosta"           
   sel = (x %in% "louro canela"                  ); x[sel] = "louro canelado" 
   sel = (x %in% "louro chumbo"                  ); x[sel] = "louro-chumbo"          
   sel = (x %in% "louro p"                       ); x[sel] = "louro preto"
   sel = (x %in% "louro pimenta"                 ); x[sel] = "louro-pimenta"         
   sel = (x %in% "louro seda"                    ); x[sel] = "louro-seda"            
   sel = (x %in% "macucu de sangue"              ); x[sel] = "macucu-de-sangue"
   sel = (x %in% "mafim"                         ); x[sel] = "marfim"
   sel = (x %in% "mamao jacatia"                 ); x[sel] = "jacaratia"             
   sel = (x %in% "mamonini"                      ); x[sel] = "mamoninha"             
   sel = (x %in% "mandioqueiro"                  ); x[sel] = "mandioqueira"
   sel = (x %in% "mandioqueiro escamoso"         ); x[sel] = "mandioqueira"
   sel = (x %in% "mangueira"                     ); x[sel] = "manguerana"
   sel = (x %in% "manguerano"                    ); x[sel] = "manguerana"
   sel = (x %in% "maparajuba"                    ); x[sel] = "parajuba"
   sel = (x %in% "maprounea"                     ); x[sel] = "caxixa"
   sel = (x %in% "mapuxique"                     ); x[sel] = "fava-mapuxiqui"
   sel = (x %in% "mapuxiqui"                     ); x[sel] = "fava-mapuxiqui"
   sel = (x %in% "maquira"                       ); x[sel] = "muiratinga"
   sel = (x %in% "maracata"                      ); x[sel] = "marassacaca"
   sel = (x %in% "maracatia"                     ); x[sel] = "muiracatiara"
   sel = (x %in% "maracacaca"                    ); x[sel] = "marassacaca"
   sel = (x %in% "marasacaca"                    ); x[sel] = "marassacaca"
   sel = (x %in% "marimari"                      ); x[sel] = "fava-marimari"
   sel = (x %in% "massaranduba"                  ); x[sel] = "macaranduba"
   sel = (x %in% "matamata branca"               ); x[sel] = "matamata branco"
   sel = (x %in% "matamata ci"                   ); x[sel] = "matamata-ci"
   sel = (x %in% "matamata cinza"                ); x[sel] = "matamata-ci"
   sel = (x %in% "matamata jiboia"               ); x[sel] = "matamata-jiboia"
   sel = (x %in% "matamata vermelha"             ); x[sel] = "matamata vermelho"
   sel = (x %in% "mata pau+jito"                 ); x[sel] = "gito"
   sel = (x %in% "mata caldo"                    ); x[sel] = "mata-calado"
   sel = (x %in% "melanciera"                    ); x[sel] = "melancieira"
   sel = (x %in% "morto"                         ); x[sel] = "morta"
   sel = (x %in% "muiratinga folha grande/amapa" ); x[sel] = "muiratinga folha grande"
   sel = (x %in% "muiratinga fura fura"          ); x[sel] = "muiratinga fura-fura"
   sel = (x %in% "mulatero"                      ); x[sel] = "mulateiro"
   sel = (x %in% "mulugu"                        ); x[sel] = "mulungu"
   sel = (x %in% "murta da mata"                 ); x[sel] = "murta-da-mata"
   sel = (x %in% "murucidu mata"                 ); x[sel] = "muruci-da-mata"
   sel = (x %in% "muruci da mata"                ); x[sel] = "muruci-da-mata"
   sel = (x %in% "muruci fp"                     ); x[sel] = "muruci folha peluda"
   sel = (x %in% "mutama"                        ); x[sel] = "mutambo"
   sel = (x %in% "mutamba"                       ); x[sel] = "mutambo"
   sel = (x %in% "mututiassu"                    ); x[sel] = "mututi-acu"
   sel = (x %in% "orelha de burro"               ); x[sel] = "orelha-de-burro"
   sel = (x %in% "orelha de macaco"              ); x[sel] = "fava orelha-de-macaco"
   sel = (x %in% "olho de sapo"                  ); x[sel] = "olho-de-sapo"
   sel = (x %in% "olho de veado"                 ); x[sel] = "olho-de-veado"
   sel = (x %in% "olho de viado"                 ); x[sel] = "olho-de-veado"
   sel = (x %in% "ouro branco"                   ); x[sel] = "seringueira"
   sel = (x %in% "p bolacha"                     ); x[sel] = "guajara-bolacha"
   sel = (x %in% "paineira"                      ); x[sel] = "sumauma"
   sel = (x %in% "palmito"                       ); x[sel] = "acai"
   sel = (x %in% "palmito babosa"                ); x[sel] = "acai"
   sel = (x %in% "pao de sangue"                 ); x[sel] = "pau-sangue"
   sel = (x %in% "papo de mutum"                 ); x[sel] = "papo-de-mutum"
   sel = (x %in% "papo de mutum ff"              ); x[sel] = "papo-de-mutum folha fina"
   sel = (x %in% "papo de mutum  ff"             ); x[sel] = "papo-de-mutum folha fina"
   sel = (x %in% "papo-de-mutum ff"              ); x[sel] = "papo-de-mutum folha fina"
   sel = (x %in% "papo-de-mutum  ff"             ); x[sel] = "papo-de-mutum folha fina"
   sel = (x %in% "paricarana"                    ); x[sel] = "fava-paricana"
   sel = (x %in% "passarinhiera"                 ); x[sel] = "passarinheira"
   sel = (x %in% "pata de vaca"                  ); x[sel] = "pata-de-vaca"
   sel = (x %in% "pata preta"                    ); x[sel] = "ata preta"
   sel = (x %in% "patua"                         ); x[sel] = "pataua"
   sel = (x %in% "pau de arco"                   ); x[sel] = "pau-de-arco"
   sel = (x %in% "pau d.arco"                    ); x[sel] = "pau-de-arco"
   sel = (x %in% "pau de bicho"                  ); x[sel] = "pau-de-bicho"
   sel = (x %in% "pau de cobra"                  ); x[sel] = "pau-cobra"
   sel = (x %in% "pau colher"                    ); x[sel] = "pau-de-colher"
   sel = (x %in% "pau de colher"                 ); x[sel] = "pau-de-colher"
   sel = (x %in% "pau de jacare"                 ); x[sel] = "pau-jacare"
   sel = (x %in% "pau de macaco"                 ); x[sel] = "pau-de-macaco"
   sel = (x %in% "pau de rego"                   ); x[sel] = "pau-de-remo"
   sel = (x %in% "pau de remo"                   ); x[sel] = "pau-de-remo"
   sel = (x %in% "pau de sangue"                 ); x[sel] = "pau-sangue"
   sel = (x %in% "pau jacare"                    ); x[sel] = "pau-jacare"
   sel = (x %in% "pau marfim"                    ); x[sel] = "pau-marfim"
   sel = (x %in% "pau mulato"                    ); x[sel] = "pau-mulato"
   sel = (x %in% "pau para tudo"                 ); x[sel] = "pau-para-tudo"
   sel = (x %in% "pau pereira"                   ); x[sel] = "peroba mica"
   sel = (x %in% "pau-pra-tudo"                  ); x[sel] = "pau-para-tudo"
   sel = (x %in% "pau pra tudo"                  ); x[sel] = "pau-para-tudo"
   sel = (x %in% "paupratudo"                    ); x[sel] = "pau-para-tudo"
   sel = (x %in% "pau prego"                     ); x[sel] = "pau-de-remo"
   sel = (x %in% "pau purui"                     ); x[sel] = "purui"
   sel = (x %in% "pau rego"                      ); x[sel] = "pau-de-remo"
   sel = (x %in% "pau sangue"                    ); x[sel] = "pau-sangue"
   sel = (x %in% "pereauna"                      ); x[sel] = "perebuna"
   sel = (x %in% "pedra umi"                     ); x[sel] = "pedra ume-caa"
   sel = (x %in% "pelo de cutia"                 ); x[sel] = "pelo-de-cutia"
   sel = (x %in% "pente de macaco"               ); x[sel] = "pente-de-macaco"
   sel = (x %in% "pepino da mata"                ); x[sel] = "pepino-do-mato"
   sel = (x %in% "pepino-da-mata"                ); x[sel] = "pepino-do-mato"
   sel = (x %in% "pepino do mato"                ); x[sel] = "pepino-do-mato"
   sel = (x %in% "pepino-do-mato"                ); x[sel] = "pepino-do-mato"
   sel = (x %in% "perna de moca"                 ); x[sel] = "perna-de-moca"
   sel = (x %in% "piqui"                         ); x[sel] = "piquia"  
   sel = (x %in% "piqui rosa"                    ); x[sel] = "piquia"
   sel = (x %in% "piquiazeiro"                   ); x[sel] = "piquia"
   sel = (x %in% "pororoca"                      ); x[sel] = "jutai-pororoca"
   sel = (x %in% "prapara"                       ); x[sel] = "parapara"
   sel = (x %in% "pratudo"                       ); x[sel] = "pau-para-tudo"
   sel = (x %in% "puruirana/purui branco"        ); x[sel] = "purui branco"
   sel = (x %in% "quaiquara"                     ); x[sel] = "acariquara"
   sel = (x %in% "quariquara"                    ); x[sel] = "acariquara"
   sel = (x %in% "quariquarana"                  ); x[sel] = "acariquara"
   sel = (x %in% "quariquari"                    ); x[sel] = "acariquara"            
   sel = (x %in% "quari quari"                   ); x[sel] = "acariquara"            
   sel = (x %in% "quebrado"                      ); x[sel] = NA_character_
   sel = (x %in% "quina"                         ); x[sel] = "quinarana" 
   sel = (x %in% "quina cruzeiro"                ); x[sel] = "quina-cruzeiro"        
   sel = (x %in% "rim de paca"                   ); x[sel] = "rim-de-paca"           
   sel = (x %in% "ripeiro"                       ); x[sel] = "ripeira"               
   sel = (x %in% "roxao"                         ); x[sel] = "roxinho"               
   sel = (x %in% "roxinao"                       ); x[sel] = "roxinho"               
   sel = (x %in% "sangra de agua"                ); x[sel] = "sangra-de-agua"
   sel = (x %in% "sapucaia"                      ); x[sel] = "castanha-sapucaia"
   sel = (x %in% "saboeira"                      ); x[sel] = "fava-saboeiro"
   sel = (x %in% "saboeira amarela"              ); x[sel] = "fava-saboeiro amarela"
   sel = (x %in% "saboeiro"                      ); x[sel] = "fava-saboeiro"
   sel = (x %in% "saboiera"                      ); x[sel] = "fava-saboeiro"
   sel = (x %in% "sabueira"                      ); x[sel] = "fava-saboeiro"  
   sel = (x %in% "sabueiro"                      ); x[sel] = "fava-saboeiro"
   sel = (x %in% "sabuguero"                     ); x[sel] = "sabugueiro"
   sel = (x %in% "sajinera"                      ); x[sel] = NA_character_
   sel = (x %in% "samauma de terra firme"        ); x[sel] = "sumauma da terra firme" 
   sel = (x %in% "sangra d`agua"                 ); x[sel] = "sangra-de-agua" 
   sel = (x %in% "sardinheiro"                   ); x[sel] = "sardinheira"
   sel = (x %in% "segador"                       ); x[sel] = "cegador"               
   sel = (x %in% "seringa"                       ); x[sel] = "seringueira"
   sel = (x %in% "seringa branca"                ); x[sel] = "seringueira"           
   sel = (x %in% "seringa branco"                ); x[sel] = "seringueira"           
   sel = (x %in% "seringa verdadeira"            ); x[sel] = "seringueira"           
   sel = (x %in% "seringarana preta"             ); x[sel] = "seringarana"           
   sel = (x %in% "seritinga"                     ); x[sel] = "seringueira"           
   sel = (x %in% "sorveira"                      ); x[sel] = "sorva"
   sel = (x %in% "sorveira leite"                ); x[sel] = "sorva"                 
   sel = (x %in% "sorvo"                         ); x[sel] = "sorva"
   sel = (x %in% "sova"                          ); x[sel] = "sorva"
   sel = (x %in% "sucupira p sapo"               ); x[sel] = "sucupira pele-de-sapo" 
   sel = (x %in% "sucupira pele de sapo"         ); x[sel] = "sucupira pele-de-sapo" 
   sel = (x %in% "sucuuba preta"                 ); x[sel] = "sucuuba" 
   sel = (x %in% "tachi branca"                  ); x[sel] = "tachi branco"          
   sel = (x %in% "tachi preta"                   ); x[sel] = "tachi preto"           
   sel = (x %in% "tachi preto ???"               ); x[sel] = "tachi preto"
   sel = (x %in% "tachi preto folh"              ); x[sel] = "tachi preto"
   sel = (x %in% "tachi vermelha"                ); x[sel] = "tachi vermelho"        
   sel = (x %in% "talquari"                      ); x[sel] = "tauari"                
   sel = (x %in% "tamaquarao"                    ); x[sel] = "tamaquare"             
   sel = (x %in% "tamarindu"                     ); x[sel] = "tamarindo"              
   sel = (x %in% "tamauma"                       ); x[sel] = "sumauma"             
   sel = (x %in% "tamboril"                      ); x[sel] = "fava-tamboril"
   sel = (x %in% "tamboriul"                     ); x[sel] = "fava-tamboril"
   sel = (x %in% "tanari roxo"                   ); x[sel] = "tauari"
   sel = (x %in% "tangarana"                     ); x[sel] = "tangirana"
   sel = (x %in% "tanimbuca"                     ); x[sel] = "tanibuca"
   sel = (x %in% "tapiririca"                    ); x[sel] = "tatapiririca"
   sel = (x %in% "tatapirirca"                   ); x[sel] = "tatapiririca"
   sel = (x %in% "tatapiririca verm."            ); x[sel] = "tatapiririca vermelha"
   sel = (x %in% "taturana"                      ); x[sel] = "taturuba"
   sel = (x %in% "tauri"                         ); x[sel] = "tauari"                
   sel = (x %in% "tento folha"                   ); x[sel] = "tento"
   sel = (x %in% "tento foha grauda"             ); x[sel] = "tento folha grauda"    
   sel = (x %in% "tintero"                       ); x[sel] = "tinteiro"              
   sel = (x %in% "titiriba"                      ); x[sel] = "cucutitiriba"              
   sel = (x %in% "tucuma acu"                    ); x[sel] = "tucuma-acu"
   sel = (x %in% "ucuarana"                      ); x[sel] = "urucurana"             
   sel = (x %in% "ucuuba da varzea"              ); x[sel] = "ucuuba-da-varzea"    
   sel = (x %in% "ucuuba da terra firme"         ); x[sel] = "ucuuba terra-firme"    
   sel = (x %in% "ucuuba terra firme"            ); x[sel] = "ucuuba terra-firme"    
   sel = (x %in% "ucuuba tf"                     ); x[sel] = "ucuuba terra-firme"    
   sel = (x %in% "ucuuba vermelho"               ); x[sel] = "ucuuba vermelha"       
   sel = (x %in% "umbia"                         ); x[sel] = "goiabarana"
   sel = (x %in% "unha de vaca"                  ); x[sel] = "pata-de-vaca"          
   sel = (x %in% "uruci"                         ); x[sel] = "muruci"
   sel = (x %in% "urucu"                         ); x[sel] = "urucum"
   sel = (x %in% "urucuri"                       ); x[sel] = "urucum"
   sel = (x %in% "uruucurana"                    ); x[sel] = "urucurana"             
   sel = (x %in% "virola"                        ); x[sel] = "ucuuba"
   sel = (x %in% "xaonoquito"                    ); x[sel] = "pau vermelho"
   #---------------------------------------------------------------------------------------#

   return(x)
}#end function standard.common.name
#==========================================================================================#
#==========================================================================================#






#==========================================================================================#
#==========================================================================================#
#      This function corrects scientific names and families that are not correctly typed,  #
# are synonyms or have become obsolete.                                                    #
#------------------------------------------------------------------------------------------#
standard.scientific.name <<- function(dat){
   #---------------------------------------------------------------------------------------#
   #     First we make sure all scientific names and families have the genus and family    #
   # capitalised (e.g.  scientific name: Araucaria angustifolia; family: Araucariaceae.    #
   #---------------------------------------------------------------------------------------#
   nplants = nrow(dat)
   #----- Remove cf., assume that we know all species for sure. ---------------------------#
   dat$scientific = tolower(dat$scientific)
   #----- Break into genus and species. ---------------------------------------------------#
   g.s     = keep.gen.spe.only(dat$scientific)
   #---------------------------------------------------------------------------------------#


   #---------------------------------------------------------------------------------------#
   #      Substitutions of scientific name.  We standardise these first so family becomes  #
   # easier.                                                                               #
   #---------------------------------------------------------------------------------------#
   g.s = sub("Aiouea densiflora"          ,"Aiouea laevis"                ,x=g.s)
   g.s = sub("Alibertia myrciifolia"      ,"Cordiera myrciifolia"         ,x=g.s)
   g.s = sub("Allophyllus floribunda"     ,"Allophylus floribundus"       ,x=g.s)
   g.s = sub("Amburana acreana"           ,"Amburana cearensis"           ,x=g.s)
   g.s = sub("Ampelocera endentula"       ,"Ampelocera edentula"          ,x=g.s)
   g.s = sub("Amphiodon effusus"          ,"Poecilanthe effusa"           ,x=g.s)
   g.s = sub("Amphirrhox longiflora"      ,"Amphirrhox longifolia"        ,x=g.s)
   g.s = sub("Amphirrhox surinamensis"    ,"Amphirrhox longifolia"        ,x=g.s)
   g.s = sub("Anadenanthera falcata"      ,"Anadenanthera peregrina"      ,x=g.s)
   g.s = sub("Anartia"                    ,"Tabernaemontana"              ,x=g.s)
   g.s = sub("Aniba roseodora"            ,"Aniba rosaeodora"             ,x=g.s)
   g.s = sub("Annona decicoma"            ,"Annona densicoma"             ,x=g.s)
   g.s = sub("Annona exsucca"             ,"Rollinia exsucca"             ,x=g.s)
   g.s = sub("Annona longifolia"          ,"Fusaea longifolia"            ,x=g.s)
   g.s = sub("Annona mucosa"              ,"Rollinia mucosa"              ,x=g.s)
   g.s = sub("Antirrhoea"                 ,"Antirhea"                     ,x=g.s)
   g.s = sub("Arthrophyllum"              ,"Polyscias"                    ,x=g.s)
   g.s = sub("Apeiba burchelii"           ,"Apeiba glabra"                ,x=g.s)
   g.s = sub("Apeiba echinata"            ,"Apeiba petoumo"               ,x=g.s)
   g.s = sub("Aspidosperma aracanga"      ,"Aspidosperma araracanga"      ,x=g.s)
   g.s = sub("Aspidosperma auriculata"    ,"Aspidosperma auriculatum"     ,x=g.s)
   g.s = sub("Aspidosperma cruentum"      ,"Aspidosperma desmanthum"      ,x=g.s)
   g.s = sub("Aspidosperma desmantum"     ,"Aspidosperma desmanthum"      ,x=g.s)
   g.s = sub("Aspidosperma desmathum"     ,"Aspidosperma desmanthum"      ,x=g.s)
   g.s = sub("Aspidosperma eteanun"       ,"Aspidosperma eteanum"         ,x=g.s)
   g.s = sub("Aspidosperma nitidum"       ,"Aspidosperma excelsum"        ,x=g.s)
   g.s = sub("Astrocaryum gynacant"       ,"Astrocaryum aculeatum"        ,x=g.s)
   g.s = sub("Astrocaryum gynacanthum"    ,"Astrocaryum aculeatum"        ,x=g.s)
   g.s = sub("Astronium le-cointei"       ,"Astronium lecointei"          ,x=g.s)
   g.s = sub("Austroplenckia populnea"    ,"Plenckia populnea"            ,x=g.s)
   g.s = sub("Balisia pedicelares"        ,"Albizia pedicellaris"         ,x=g.s)
   g.s = sub("Balizia pedicellaris"       ,"Albizia pedicellaris"         ,x=g.s)
   g.s = sub("Bauhinia jarensis"          ,"Bauhinia deleteme"            ,x=g.s)
   g.s = sub("Bellucia grossulariodis"    ,"Bellucia grossularioides"     ,x=g.s)
   g.s = sub("Beureria"                   ,"Calycanthus"                  ,x=g.s)
   g.s = sub("Bosqueia"                   ,"Trilepisium"                  ,x=g.s)
   g.s = sub("Bracteanthus glycycarpus"   ,"Siparuna glycycarpa"          ,x=g.s)
   g.s = sub("Brosimopsis obovata"        ,"Brosimum acutifolium"         ,x=g.s)
   g.s = sub("Brosimum autifolium"        ,"Brosimum acutifolium"         ,x=g.s)
   g.s = sub("Brosimum lactascens"        ,"Brosimum lactescens"          ,x=g.s)
   g.s = sub("Brosimum guianensis"        ,"Brosimum guianense"           ,x=g.s)
   g.s = sub("Brosimum obovata"           ,"Brosimum acutifolium"         ,x=g.s)
   g.s = sub("Byrsonima chrysophylla"     ,"Byrsonima spicata"            ,x=g.s)
   g.s = sub("Byrsonima estipulacea"      ,"Byrsonima stipulacea"         ,x=g.s)
   g.s = sub("Byrsonima schultesiana"     ,"Byrsonima arthropoda"         ,x=g.s)
   g.s = sub("Capirona ulei"              ,"Capirona decorticans"         ,x=g.s)
   g.s = sub("Casearia bracteifera"       ,"Casearia combaymensis"        ,x=g.s)
   g.s = sub("Capparis frondosa"          ,"Capparidastrum frondosum"     ,x=g.s)
   g.s = sub("Cecropia distachia"         ,"Cecropia distachya"           ,x=g.s)
   g.s = sub("Cedrela fistis"             ,"Cedrela fissilis"             ,x=g.s)
   g.s = sub("Cedrella odorata"           ,"Cedrela odorata"              ,x=g.s)
   g.s = sub("Caeseria"                   ,"Casearia"                     ,x=g.s)
   g.s = sub("Chanouchiton kapleri"       ,"Chaunochiton kappleri"        ,x=g.s)
   g.s = sub("Chaunochiton kapleri"       ,"Chaunochiton kappleri"        ,x=g.s)
   g.s = sub("Clarisia elicifolia"        ,"Clarisia ilicifolia"          ,x=g.s)
   g.s = sub("Compomanesia"               ,"Campomanesia"                 ,x=g.s)
   g.s = sub("Connarus perrottetes"       ,"Connarus perrottetii"         ,x=g.s)
   g.s = sub("Connarus spermattetii"      ,"Connarus perrotettii"         ,x=g.s)
   g.s = sub("Cordia scrabida"            ,"Cordia exaltata"              ,x=g.s)
   g.s = sub("Gaulettia racemosa"         ,"Couepia racemosa"             ,x=g.s)
   g.s = sub("Coussarea racemosa"         ,"Coussarea albescens"          ,x=g.s)
   g.s = sub("Crepidospermum gondotiano"  ,"Crepidospermum goudotianum"   ,x=g.s)
   g.s = sub("Crepidospermum goudotiano"  ,"Crepidospermum goudotianum"   ,x=g.s)
   g.s = sub("Cupania hirta"              ,"Cupania hirsuta"              ,x=g.s)
   g.s = sub("Cybistax antisiphyllitica"  ,"Cybistax antisyphilitica"     ,x=g.s)
   g.s = sub("Dendrobrangea boliviana"    ,"Dendrobangia boliviana"       ,x=g.s)
   g.s = sub("Dialium guianensis"         ,"Dialium guianense"            ,x=g.s)
   g.s = sub("Diclinanonna matogrossensis","Diclinanona matogrossensis"   ,x=g.s)
   g.s = sub("Didymopanax vinosum"        ,"Schefflera vinosa"            ,x=g.s)
   g.s = sub("Didymopanax"                ,"Schefflera"                   ,x=g.s)
   g.s = sub("Diospyros praetermissa?"    ,"Diospyros vestita"            ,x=g.s)
   g.s = sub("Diospyros praetermissa"     ,"Diospyros vestita"            ,x=g.s)
   g.s = sub("Diploon venezuelano"        ,"Diploon cuspidatum"           ,x=g.s)
   g.s = sub("Dipteriyx odorata"          ,"Dipteryx odorata"             ,x=g.s)
   g.s = sub("Endlecheria"                ,"Endlicheria"                  ,x=g.s)
   g.s = sub("Enterolobium schobburgkii"  ,"Enterolobium schomburgkii"    ,x=g.s)
   g.s = sub("Enterolobium schombburgkii" ,"Enterolobium schomburgkii"    ,x=g.s)
   g.s = sub("Ephedrantus parviflorus"    ,"Ephedranthus parviflorus"     ,x=g.s)
   g.s = sub("Ephedrantus parvifolius"    ,"Ephedranthus parviflorus"     ,x=g.s)
   g.s = sub("Eriotreca globosa"          ,"Eriotheca globosa"            ,x=g.s)
   g.s = sub("Eschweilera amazomica"      ,"Eschweilera amazonica"        ,x=g.s)
   g.s = sub("Eschweilera apiculatum"     ,"Eschweilera apiculata"        ,x=g.s)
   g.s = sub("Eschweilera grandifolia"    ,"Eschweilera coriacea"         ,x=g.s)
   g.s = sub("Eschweilera idatimom"       ,"Lecythis idatimon"            ,x=g.s)
   g.s = sub("Eschweilera observa"        ,"Eschweilera obversa"          ,x=g.s)
   g.s = sub("Eschweilera pedicelata"     ,"Eschweilera pedicellata"      ,x=g.s)
   g.s = sub("Eugenia pacumensis"         ,"Austromyrtus ploumensis"      ,x=g.s)
   g.s = sub("Eugenia schumburgkii"       ,"Eugenia lambertiana"          ,x=g.s)
   g.s = sub("Ganua"                      ,"Madhuca"                      ,x=g.s)
   g.s = sub("Garcinia gardneriana"       ,"Garcinia brasiliensis"        ,x=g.s)
   g.s = sub("Geissospermum velosii"      ,"Geissospermum laeve"          ,x=g.s)
   g.s = sub("Geissospermum velozii"      ,"Geissospermum laeve"          ,x=g.s)
   g.s = sub("Glicoxilum"                 ,"Pouteria oppositifolia"       ,x=g.s)
   g.s = sub("Glycydendrom amazonicus"    ,"Glycydendron amazonicum"      ,x=g.s)
   g.s = sub("Glycydendron amazonicus"    ,"Glycydendron amazonicum"      ,x=g.s)
   g.s = sub("Guarea guianensis"          ,"Guarea"                       ,x=g.s)
   g.s = sub("Guarea subsessiliflora"     ,"Guarea macrophylla"           ,x=g.s)
   g.s = sub("Guatteria cardoniana"       ,"Guatteria recurvisepala"      ,x=g.s)
   g.s = sub("Hieronyma alcheornoides"    ,"Hieronyma alchorneoides"      ,x=g.s)
   g.s = sub("Hyeronima alcheornoides"    ,"Hieronyma alchorneoides"      ,x=g.s)
   g.s = sub("Hyeronima"                  ,"Hieronyma"                    ,x=g.s)
   g.s = sub("Hymenaea parviflora"        ,"Hymenaea parvifolia"          ,x=g.s)
   g.s = sub("Hymenolobium flavium"       ,"Hymenolobium flavum"          ,x=g.s)
   g.s = sub("Ilex parviflora"            ,"Ilex petiolaris"              ,x=g.s)
   g.s = sub("Inga aff\\."                ,"Inga affinis"                 ,x=g.s)
   g.s = sub("Inga jenmanii"              ,"Inga sertulifera"             ,x=g.s)
   g.s = sub("Inga dibaldiana"            ,"Inga thibaudiana"             ,x=g.s)
   g.s = sub("Inga nitida"                ,"Inga pilosula"                ,x=g.s)
   g.s = sub("Inga paraenses"             ,"Inga paraensis"               ,x=g.s)
   g.s = sub("Inga poliphylla"            ,"Inga"                         ,x=g.s)
   g.s = sub("Jacaraitia espinhosa"       ,"Jacaratia spinosa"            ,x=g.s)
   g.s = sub("Joannesia hevioides"        ,"Joannesia heveoides"          ,x=g.s)
   g.s = sub("Lacmelea aculeata"          ,"Lacmellea aculeata"           ,x=g.s)
   g.s = sub("Laetia procerra"            ,"Laetia procera"               ,x=g.s)
   g.s = sub("Lecythis praeclara"         ,"Eschweilera praealta"         ,x=g.s)
   g.s = sub("Licania densa"              ,"Licania densiflora"           ,x=g.s)
   g.s = sub("Licaria heteromorpha"       ,"Licania heteromorpha"         ,x=g.s)
   g.s = sub("Lucanarea"                  ,"Lacunaria"                    ,x=g.s)
   g.s = sub("Luheopsis duckeana"         ,"Lueheopsis duckeana"          ,x=g.s)
   g.s = sub("Lustema pubescei"           ,"Lacistema pubescens"          ,x=g.s)
   g.s = sub("Manilkara amazonica"        ,"Manilkara bidentata"          ,x=g.s)
   g.s = sub("Maluria"                    ,"Marlierea umbraticola"        ,x=g.s)
   g.s = sub("Maquira callophylla"        ,"Maquira calophylla"           ,x=g.s)
   g.s = sub("Marmaroxylon racemosum"     ,"Zygia racemosa"               ,x=g.s)
   g.s = sub("Mauriri chamissoana"        ,"Mouriri chamissoana"          ,x=g.s)
   g.s = sub("Maytenos guianensis"        ,"Maytenus guyanensis"          ,x=g.s)
   g.s = sub("Maytenus guianensis"        ,"Maytenus guyanensis"          ,x=g.s)
   g.s = sub("Meia maderensis"            ,"Neea"                         ,x=g.s)
   g.s = sub("Memora"                     ,"Adenocalymma"                 ,x=g.s)
   g.s = sub("Meterosideros"              ,"Metrosideros"                 ,x=g.s)
   g.s = sub("Mezelaurus"                 ,"Mezilaurus"                   ,x=g.s)
   g.s = sub("Mezelaurus itauba"          ,"Mezilaurus itauba"            ,x=g.s)
   g.s = sub("Miconia chrysophyllum"      ,"Miconia chrysophylla"         ,x=g.s)
   g.s = sub("Miconia surinamensis"       ,"Miconia poeppigii"            ,x=g.s)
   g.s = sub("Michopholis venulosa"       ,"Micropholis venulosa"         ,x=g.s)
   g.s = sub("Microphilis"                ,"Micropholis"                  ,x=g.s)
   g.s = sub("Micropholis guianensis"     ,"Micropholis guyanensis"       ,x=g.s)
   g.s = sub("Micropholis cuneata"        ,"Micropholis crassipedicellata",x=g.s)
   g.s = sub("Microphylis acutangula"     ,"Micropholis acutangula"       ,x=g.s)
   g.s = sub("Milletia"                   ,"Millettia"                    ,x=g.s)
   g.s = sub("Mimosa hostilis"            ,"Mimosa tenuiflora"            ,x=g.s)
   g.s = sub("Mouriri abnormis"           ,"Votomita guianensis"          ,x=g.s)
   g.s = sub("Myrciaria reticulata"       ,"Myrcia reticulata"            ,x=g.s)
   g.s = sub("Myrcia rutipula"            ,"Myrcia rufipila"              ,x=g.s)
   g.s = sub("Myrcia velutina"            ,"Myrcia"                       ,x=g.s)
   g.s = sub("Nephrolepsis"               ,"Nephrolepis"                  ,x=g.s)
   g.s = sub("Newtonia psilostachya"      ,"Pseudopiptadenia psilostachya",x=g.s)
   g.s = sub("Ocotea baturitensis"        ,"Ocotea"                       ,x=g.s)
   g.s = sub("Ocotea caudata"             ,"Ocotea cernua"                ,x=g.s)
   g.s = sub("Ocotea rubra"               ,"Sextonia rubra"               ,x=g.s)
   g.s = sub("Omedia perebea"             ,"Perebea mollis"               ,x=g.s)
   g.s = sub("Onichiopetalum amazonico"   ,"Onychopetalum amazonicum"     ,x=g.s)
   g.s = sub("Orbignya phalerata"         ,"Attalea speciosa"             ,x=g.s)
   g.s = sub("Pancovia"                   ,"Eurhynchium"                  ,x=g.s)
   g.s = sub("Parkia oppositifolia"       ,"Parkia nitida"                ,x=g.s)
   g.s = sub("Pausandra densiflora"       ,"Pausandra trianae"            ,x=g.s)
   g.s = sub("Peltogyne leicointei"       ,"Peltogyne lecointei"          ,x=g.s)
   g.s = sub("Piptadenia cobi"            ,"Stryphnodendron pulcherrimum" ,x=g.s)
   g.s = sub("Pouroma guianensis"         ,"Pourouma guianensis"          ,x=g.s)
   g.s = sub("Pouruma guianensis"         ,"Pourouma guianensis"          ,x=g.s)
   g.s = sub("Pourouma vilosa"            ,"Pourouma villosa"             ,x=g.s)
   g.s = sub("Pouteria ambelanifolia"     ,"Pouteria ambelaniifolia"      ,x=g.s)
   g.s = sub("Pouteria biloculares"       ,"Pouteria bilocularis"         ,x=g.s)
   g.s = sub("Pouteria filipis"           ,"Pouteria filipes"             ,x=g.s)
   g.s = sub("Pouteria lasiocarpa"        ,"Pouteria caimito"             ,x=g.s)
   g.s = sub("Pouteria gonggrijpii"       ,"Pouteria gongrijpii"          ,x=g.s)
   g.s = sub("Pouteria heterosepala"      ,"Pouteria polysepala"          ,x=g.s)
   g.s = sub("Pouteria macrophilla"       ,"Pouteria macrophylla"         ,x=g.s)
   g.s = sub("Pouteria paraensis"         ,"Pouteria macrocarpa"          ,x=g.s)
   g.s = sub("Pradosia praealta"          ,"Pradosia cochlearia"          ,x=g.s)
   g.s = sub("Protiumuceanum"             ,"Protium spruceanum"           ,x=g.s)
   g.s = sub("Protium heptafilum"         ,"Protium heptaphyllum"         ,x=g.s)
   g.s = sub("Protium hepytaphillum"      ,"Protium heptaphyllum"         ,x=g.s)
   g.s = sub("Protium pernervatum"        ,"Protium"                      ,x=g.s)
   g.s = sub("Prumes myrtifoliu"          ,"Prunus myrtifolia"            ,x=g.s)
   g.s = sub("Prunus myrtifolius"         ,"Prunus myrtifolia"            ,x=g.s)
   g.s = sub("Pseudolmedia murure"        ,"Pseudolmedia macrophylla"     ,x=g.s)
   g.s = sub("Ptecelobuim jucumba"        ,"Abarema jupunba"              ,x=g.s)
   g.s = sub("Pterocarpos rorhii"         ,"Pterocarpus rohrii"           ,x=g.s)
   g.s = sub("Pterocarpus amazonium"      ,"Pterocarpus santalinoides"    ,x=g.s)
   g.s = sub("Pterocarpus rhoire"         ,"Pterocarpus rohrii"           ,x=g.s)
   g.s = sub("Pterocarpus rhoiri"         ,"Pterocarpus rohrii"           ,x=g.s)
   g.s = sub("Ragala guianensis"          ,"Chrysophyllum sanguinolentum" ,x=g.s)
   g.s = sub("Rapanea ferruginea"         ,"Myrsine coriacea"             ,x=g.s)
   g.s = sub("Rapanea guianensis"         ,"Myrsine guianensis"           ,x=g.s)
   g.s = sub("Rheedia acuminata"          ,"Garcinia madruno"             ,x=g.s)
   g.s = sub("Rheedia gardneriana"        ,"Garcinia gardneriana"         ,x=g.s)
   g.s = sub("Rhodognaphalopsis"          ,"Pachira"                      ,x=g.s)
   g.s = sub("Rim de"                     ,"Crudia"                       ,x=g.s)
   g.s = sub("Rinorea pectino-squamata"   ,"Rinorea pectinosquamata"      ,x=g.s)
   g.s = sub("Rinoria guianensis"         ,"Rinorea guianensis"           ,x=g.s)
   g.s = sub("Rinorea passoura"           ,"Rinorea pubiflora"            ,x=g.s)
   g.s = sub("Rinoria racenosa"           ,"Rinorea racemosa"             ,x=g.s)
   g.s = sub("Rolinha esxuccar"           ,"Rollinia exsucca"             ,x=g.s)
   g.s = sub("Rollinia esxucca"           ,"Rollinia exsucca"             ,x=g.s)
   g.s = sub("Sacrogrotis guianensis"     ,"Sacoglottis guianensis"       ,x=g.s)
   g.s = sub("Salacea"                    ,"Salacia"                      ,x=g.s)
   g.s = sub("Salacia imprissifolia"      ,"Salacia impressifolia"        ,x=g.s)
   g.s = sub("Schefflera morototonii"     ,"Schefflera morototoni"        ,x=g.s)
   g.s = sub("Sclerolobium chrysophylum"  ,"Tachigali chrysophylla"       ,x=g.s)
   g.s = sub("Sclerolobium chrysophyllum" ,"Tachigali chrysophylla"       ,x=g.s)
   g.s = sub("Sclerolobium guianensis"    ,"Tachigali guianensis"         ,x=g.s)
   g.s = sub("Sclerolobium guianense"     ,"Tachigali guianensis"         ,x=g.s)
   g.s = sub("Simaba guianenses"          ,"Simaba guianensis"            ,x=g.s)
   g.s = sub("Simabacedron planch\\."     ,"Simaba cedron"                ,x=g.s)
   g.s = sub("Simarouba armara"           ,"Simarouba amara"              ,x=g.s)
   g.s = sub("Simaruba armara"            ,"Simarouba amara"              ,x=g.s)
   g.s = sub("Sipararuna"                 ,"Siparuna"                     ,x=g.s)
   g.s = sub("Stryphnodendron pulchrrimum","Stryphnodendron pulcherrimum" ,x=g.s)
   g.s = sub("Styrax ferrugineum"         ,"Styrax ferrugineus"           ,x=g.s)
   g.s = sub("Swartzia arborensis"        ,"Swartzia arborescens"         ,x=g.s)
   g.s = sub("Swartzia flamingii"         ,"Swartzia flaemingii"          ,x=g.s)
   g.s = sub("Swartizia microcarpum"      ,"Swartzia microcarpa"          ,x=g.s)
   g.s = sub("Swartzia retusa"            ,"Swartzia recurva"             ,x=g.s)
   g.s = sub("Swartzia viridiflora"       ,"Bocoa viridiflora"            ,x=g.s)
   g.s = sub("Tabebuia avellanedae"       ,"Handroanthus impetiginosus"   ,x=g.s)
   g.s = sub("Tabebuia barbata"           ,"Handroanthus barbatus"        ,x=g.s)
   g.s = sub("Tabebuia billbergii"        ,"Handroanthus billbergii"      ,x=g.s)
   g.s = sub("Tabebuia capitata"          ,"Handroanthus capitatus"       ,x=g.s)
   g.s = sub("Tabebuia chrysantha"        ,"Handroanthus chrysanthus"     ,x=g.s)
   g.s = sub("Tabebuia chrysotricha"      ,"Handroanthus chrysotrichus"   ,x=g.s)
   g.s = sub("Tabebuia donnell-smithii"   ,"Roseodendron donnell-smithii" ,x=g.s)
   g.s = sub("Tabebuia guayacan"          ,"Handroanthus guayacan"        ,x=g.s)
   g.s = sub("Tabebuia heptaphylla"       ,"Handroanthus heptaphyllus"    ,x=g.s)
   g.s = sub("Tabebuia impetiginosa"      ,"Handroanthus impetiginosus"   ,x=g.s)
   g.s = sub("Tabebuia incana"            ,"Handroanthus incanus"         ,x=g.s)
   g.s = sub("Tabebuia lapacho"           ,"Handroanthus lapacho"         ,x=g.s)
   g.s = sub("Tabebuia obscura"           ,"Handroanthus obscurus"        ,x=g.s)
   g.s = sub("Tabebuia pedicellata"       ,"Handroanthus pedicellatus"    ,x=g.s)
   g.s = sub("Tabebuia serratifolia"      ,"Handroanthus serratifolius"   ,x=g.s)
   g.s = sub("Tabebuia vellosoi"          ,"Handroanthus vellosoi"        ,x=g.s)
   g.s = sub("Tachigalia alba"            ,"Tachigali paniculata"         ,x=g.s)
   g.s = sub("Tachigali alba"             ,"Tachigali paniculata"         ,x=g.s)
   g.s = sub("Tachigalia myrmecophila"    ,"Tachigali myrmecophila"       ,x=g.s)
   g.s = sub("Tachigalia paniculata"      ,"Tachigali paniculata"         ,x=g.s)
   g.s = sub("Tapirira marchandi"         ,"Tapirira obtusa"              ,x=g.s)
   g.s = sub("Tapirira marchandii"        ,"Tapirira obtusa"              ,x=g.s)
   g.s = sub("Tapirira myriantha"         ,"Tapirira guianensis"          ,x=g.s)
   g.s = sub("Tapirira peckoltiana"       ,"Tapirira obtusa"              ,x=g.s)
   g.s = sub("Terminalea argentea"        ,"Terminalia argentea"          ,x=g.s)
   g.s = sub("Terminalia amazonica"       ,"Terminalia amazonia"          ,x=g.s)
   g.s = sub("Theobroma subincaum"        ,"Theobroma subincanum"         ,x=g.s)
   g.s = sub("Thyrsodium paraense"        ,"Thyrsodium spruceanum"        ,x=g.s)
   g.s = sub("Trattinickia laurencei"     ,"Trattinnickia lawrancei"      ,x=g.s)
   g.s = sub("Trattinickia laurense"      ,"Trattinnickia lawrancei"      ,x=g.s)
   g.s = sub("Trattinickia rhoifolia"     ,"Trattinnickia rhoifolia"      ,x=g.s)
   g.s = sub("Trattinickia"               ,"Trattinnickia"                ,x=g.s)
   g.s = sub("Trattinnickia burseraefolia","Trattinnickia burserifolia"   ,x=g.s)
   g.s = sub("Trichilia lequente"         ,"Trichilia lecointei"          ,x=g.s)
   g.s = sub("Triquilia lequente"         ,"Trichilia lecointei"          ,x=g.s)
   g.s = sub("Trichilia sipo"             ,"Trichilia cipo"               ,x=g.s)
   g.s = sub("Trichillia"                 ,"Trichilia"                    ,x=g.s)
   g.s = sub("Trymatococcus amazonicum"   ,"Trymatococcus amazonicus"     ,x=g.s)
   g.s = sub("Trymatococcus paraensis"    ,"Trymatococcus amazonicus"     ,x=g.s)
   g.s = sub("Vataicreopesis speciosa"    ,"Vataireopsis speciosa"        ,x=g.s)
   g.s = sub("Vataireopesis speciosa"     ,"Vataireopsis speciosa"        ,x=g.s)
   g.s = sub("Vernonia diffusa"           ,"Vernonia erigeroides"         ,x=g.s)
   g.s = sub("Vimia guianensis"           ,"Vismia guianensis"            ,x=g.s)
   g.s = sub("Virola crebinervia"         ,"Virola crebrinervia"          ,x=g.s)
   g.s = sub("Virola melinoni$"           ,"Virola michelii"              ,x=g.s)
   g.s = sub("Virola melinonii"           ,"Virola michelii"              ,x=g.s)
   g.s = sub("Virola melionii"            ,"Virola michelii"              ,x=g.s)
   g.s = sub("Virola melioni"             ,"Virola michelii"              ,x=g.s)
   g.s = sub("Virola michelli"            ,"Virola michelii"              ,x=g.s)
   g.s = sub("Vochisia surinamensis"      ,"Vochysia surinamensis"        ,x=g.s)
   g.s = sub("Vochysia micrantha"         ,"Vochysia"                     ,x=g.s)
   g.s = sub("Zizyphus itacaiunensis"     ,"Ziziphus"                     ,x=g.s)
   #---------------------------------------------------------------------------------------#



   #----- Break again into genus and species. ---------------------------------------------#
   g.s = keep.gen.spe.only(x=g.s)
   #---------------------------------------------------------------------------------------#



   #----- Remove family names from scientific columns. ------------------------------------#
   bye                 = g.s %in% c("Anacardiaceae","Myrtaceae","Moraceae","Ind"
                                   ,"Lauraceae","Nyctaginaceae")
   g.s[bye]            = NA_character_
   liana               = g.s %in% c("Liane")
   g.s[liana]          = "Liana"
   #---------------------------------------------------------------------------------------#


   #------ Find genus. --------------------------------------------------------------------#
   g   = keep.gen.spe.only(x=g.s,out="genus")
   #---------------------------------------------------------------------------------------#

   #---------------------------------------------------------------------------------------#
   #      Copy the data back to the structure.                                             #
   #---------------------------------------------------------------------------------------#
   dat$scientific = g.s
   dat$genus      = g
   #---------------------------------------------------------------------------------------#

   return(dat)
}#end function standard.common.name
#==========================================================================================#
#==========================================================================================#






#==========================================================================================#
#==========================================================================================#
#      This is the most up-to-date table to find families given the genus.  This contains  #
# all genera that occur at TNF and Paracou, feel free to add more.  In case the family is  #
# known but the genus is not, we add a unique genus name that is non-informative.          #
#------------------------------------------------------------------------------------------#
standard.family.name <<- function(datum){
   #----- Make sure families are properly capitalised. ------------------------------------#
   datum$family = capwords(datum$family,strict=TRUE)
   #---------------------------------------------------------------------------------------#



   #---------------------------------------------------------------------------------------#
   #     Substitute obsolete/misspelt families that are straightforward.                   #
   #---------------------------------------------------------------------------------------#
   datum$family = sub("Bombacaceae"                 ,"Malvaceae"     ,x=datum$family)
   datum$family = sub("Caesalpinaceae"              ,"Fabaceae"      ,x=datum$family)
   datum$family = sub("Cecropiaceae"                ,"Urticaceae"    ,x=datum$family)
   datum$family = sub("Elacocarpaceae"              ,"Elaeocarpaceae",x=datum$family)
   datum$family = sub("Guttiferae"                  ,"Clusiaceae"    ,x=datum$family)
   datum$family = sub("Hippocrateaceae"             ,"Celastraceae"  ,x=datum$family)
   datum$family = sub("Leguminosae"                 ,"Fabaceae"      ,x=datum$family)
   datum$family = sub("Leguminosae-Mimosoideae"     ,"Fabaceae"      ,x=datum$family)
   datum$family = sub("Leguminosae-Caesalpinioideae","Fabaceae"      ,x=datum$family)
   datum$family = sub("Leguminosae-Papilionoideae"  ,"Fabaceae"      ,x=datum$family)
   datum$family = sub("Quiinaceae"                  ,"Ochnaceae"     ,x=datum$family)
   datum$family = sub("Ramnaceae"                   ,"Rhamnaceae"    ,x=datum$family)
   datum$family = sub("Mimosaceae"                  ,"Fabaceae"      ,x=datum$family)
   datum$family = sub("Papilionaceae"               ,"Fabaceae"      ,x=datum$family)
   datum$family = sub("Tiliaceae"                   ,"Malvaceae"     ,x=datum$family)
   datum$family = sub("Sterculiaceae"               ,"Malvaceae"     ,x=datum$family)
   #---------------------------------------------------------------------------------------#




   #---------------------------------------------------------------------------------------#
   #     Look-up table for all families.                                                   #
   #---------------------------------------------------------------------------------------#
   n=0  ; g2f      = list()
   n=n+1; g2f[[n]] = list( genus = "Abarema"            , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Abuta"              , family = "Menispermaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Acalypha"           , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Acmanthera"         , family = "Malpighiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Acrocomia"          , family = "Arecaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Acosmium"           , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Adenocalymma"       , family = "Bignoniaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Adenophaedra"       , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Agonandra"          , family = "Opiliaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Adinandra"          , family = "Pentaphylacaceae"  )
   n=n+1; g2f[[n]] = list( genus = "Aegiphila"          , family = "Lamiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Aiouea"             , family = "Lauraceae"         )
   n=n+1; g2f[[n]] = list( genus = "Albizia"            , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Alchornea"          , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Alchorneopsis"      , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Aldina"             , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Alexa"              , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Alibertia"          , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Allantoma"          , family = "Lecythidaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Allophylus"         , family = "Sapindaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Alseis"             , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Amaioua"            , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Ambelania"          , family = "Apocynaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Amburana"           , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Ampelocera"         , family = "Ulmaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Amphiodon"          , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Amphirrhox"         , family = "Violaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Amphitecna"         , family = "Bignoniaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Anacardium"         , family = "Anacardiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Anadenanthera"      , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Anaxagorea"         , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Andira"             , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Aniba"              , family = "Lauraceae"         )
   n=n+1; g2f[[n]] = list( genus = "Anisophyllea"       , family = "Anisophylleaceae"  )
   n=n+1; g2f[[n]] = list( genus = "Annona"             , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Anomalocalyx"       , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Antirhea"           , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Anthonotha"         , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Antonia"            , family = "Loganiaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Aparisthmium"       , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Apeiba"             , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Aporosa"            , family = "Phyllanthaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Aptandra"           , family = "Olacaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Apuleia"            , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Aspidosperma"       , family = "Apocynaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Astrocaryum"        , family = "Arecaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Astronium"          , family = "Anacardiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Attalea"            , family = "Arecaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Austromyrtus"       , family = "Myrtaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Avicennia"          , family = "Acanthaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Baccaurea"          , family = "Phyllanthaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Baccharis"          , family = "Asteraceae"        )
   n=n+1; g2f[[n]] = list( genus = "Bactris"            , family = "Arecaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Bagassa"            , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Balfourodendron"    , family = "Rutaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Balizia"            , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Banara"             , family = "Salicaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Barteria"           , family = "Passifloraceae"    )
   n=n+1; g2f[[n]] = list( genus = "Batesia"            , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Batocarpus"         , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Bauhinia"           , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Bellucia"           , family = "Melastomataceae"   )
   n=n+1; g2f[[n]] = list( genus = "Berlinia"           , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Bertholletia"       , family = "Lecythidaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Blakea"             , family = "Melastomataceae"   )
   n=n+1; g2f[[n]] = list( genus = "Blepharocalyx"      , family = "Myrtaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Bixa"               , family = "Bixaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Bocageopsis"        , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Bocoa"              , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Boehmeria"          , family = "Urticaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Bombax"             , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Botryarrhena"       , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Bowdichia"          , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Brachychiton"       , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Brosimum"           , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Bruguiera"          , family = "Rhizophoraceae"    )
   n=n+1; g2f[[n]] = list( genus = "Buchenavia"         , family = "Combretaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Bursera"            , family = "Burseraceae"       )
   n=n+1; g2f[[n]] = list( genus = "Byrsonima"          , family = "Malpighiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Caesalpinia"        , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Calathea"           , family = "Marantaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Calliandra"         , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Calophyllum"        , family = "Calophyllaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Calycanthus"        , family = "Calycanthaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Calycophyllum"      , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Calyptranthes"      , family = "Myrtaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Campomanesia"       , family = "Myrtaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Capirona"           , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Capparidastrum"     , family = "Capparaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Capparis"           , family = "Capparaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Caraipa"            , family = "Calophyllaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Carapa"             , family = "Meliaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Cariniana"          , family = "Lecythidaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Caryocar"           , family = "Caryocaraceae"     )
   n=n+1; g2f[[n]] = list( genus = "Casearia"           , family = "Salicaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Cassia"             , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Cassipourea"        , family = "Rhizophoraceae"    )
   n=n+1; g2f[[n]] = list( genus = "Castilla"           , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Catostemma"         , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Cavanillesia"       , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Cecropia"           , family = "Urticaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Cedrela"            , family = "Meliaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Cedrelinga"         , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Ceiba"              , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Celtis"             , family = "Cannabaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Cerbera"            , family = "Apocynaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Cereus"             , family = "Cactaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Ceriops"            , family = "Rhizophoraceae"    )
   n=n+1; g2f[[n]] = list( genus = "Chaetachme"         , family = "Ulmaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Chaetocarpus"       , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Chaetochlamys"      , family = "Acanthaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Chamaecrista"       , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Chamaedorea"        , family = "Arecaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Chaunochiton"       , family = "Olacaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Cheiloclinium"      , family = "Celastraceae"      )
   n=n+1; g2f[[n]] = list( genus = "Chimarrhis"         , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Chionanthus"        , family = "Oleaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Chloroleucon"       , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Chromolucuma"       , family = "Sapotaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Chrysobalanus"      , family = "Chrysobalanaceae"  )
   n=n+1; g2f[[n]] = list( genus = "Chrysophyllum"      , family = "Sapotaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Cissus"             , family = "Vitaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Citrus"             , family = "Rutaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Citharexylum"       , family = "Verbenaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Claoxylon"          , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Clarisia"           , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Clidemia"           , family = "Melastomataceae"   )
   n=n+1; g2f[[n]] = list( genus = "Clitoria"           , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Clusia"             , family = "Clusiaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Cnidoscolus"        , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Cochlospermum"      , family = "Bixaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Coccoloba"          , family = "Polygonaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Colubrina"          , family = "Rhamnaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Commersonia"        , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Commiphora"         , family = "Burseraceae"       )
   n=n+1; g2f[[n]] = list( genus = "Conceveiba"         , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Connarus"           , family = "Connaraceae"       )
   n=n+1; g2f[[n]] = list( genus = "Copaifera"          , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Cordia"             , family = "Boraginaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Cordiera"           , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Corythophora"       , family = "Lecythidaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Couepia"            , family = "Chrysobalanaceae"  )
   n=n+1; g2f[[n]] = list( genus = "Coula"              , family = "Olacaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Couma"              , family = "Apocynaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Couratari"          , family = "Lecythidaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Coursetia"          , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Coussapoa"          , family = "Urticaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Coussarea"          , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Coutarea"           , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Crepidospermum"     , family = "Burseraceae"       )
   n=n+1; g2f[[n]] = list( genus = "Croton"             , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Crudia"             , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Cupania"            , family = "Sapindaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Cybianthus"         , family = "Primulaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Cybistax"           , family = "Bignoniaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Cymbopetalum"       , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Cynometra"          , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Dacrydium"          , family = "Podocarpaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Dacryodes"          , family = "Burseraceae"       )
   n=n+1; g2f[[n]] = list( genus = "Dalbergia"          , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Deidamia"           , family = "Passifloraceae"    )
   n=n+1; g2f[[n]] = list( genus = "Dendrobangia"       , family = "Cardiopteridaceae" )
   n=n+1; g2f[[n]] = list( genus = "Dendropanax"        , family = "Araliaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Desmoncus"          , family = "Arecaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Desmopsis"          , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Dialium"            , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Diclinanona"        , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Dichostemma"        , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Dicorynia"          , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Dicranopteris"      , family = "Gleicheniaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Dicranostyles"      , family = "Convolvulaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Dictyocaryum"       , family = "Arecaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Dicypellium"        , family = "Lauraceae"         )
   n=n+1; g2f[[n]] = list( genus = "Dimorphandra"       , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Dillenia"           , family = "Dilleniaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Dinizia"            , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Diospyros"          , family = "Ebenaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Diplospora"         , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Diplotropis"        , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Dipterocarpus"      , family = "Dipterocarpaceae"  )
   n=n+1; g2f[[n]] = list( genus = "Dipteryx"           , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Discophora"         , family = "Stemonuraceae"     )
   n=n+1; g2f[[n]] = list( genus = "Doliocarpus"        , family = "Dilleniaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Dodecastigma"       , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Dombeya"            , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Drimys"             , family = "Winteraceae"       )
   n=n+1; g2f[[n]] = list( genus = "Drypetes"           , family = "Putranjivaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Duckeodendron"      , family = "Solanaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Duckesia"           , family = "Humiriaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Dulacia"            , family = "Olacaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Duguetia"           , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Duroia"             , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Dussia"             , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Dystovomita"        , family = "Clusiaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Ecclinusa"          , family = "Sapotaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Elaeis"             , family = "Arecaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Elaeoluma"          , family = "Sapotaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Elateriospermum"    , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Elizabetha"         , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Emmotum"            , family = "Emmotaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Endlicheria"        , family = "Lauraceae"         )
   n=n+1; g2f[[n]] = list( genus = "Endopleura"         , family = "Humiriaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Enterolobium"       , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Eperua"             , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Ephedranthus"       , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Eriotheca"          , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Erisma"             , family = "Vochysiaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Erythrina"          , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Erythroxylum"       , family = "Erythroxylaceae"   )
   n=n+1; g2f[[n]] = list( genus = "Eschweilera"        , family = "Lecythidaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Esenbeckia"         , family = "Rutaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Eugenia"            , family = "Myrtaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Eurhynchium"        , family = "Brachytheciaceae"  )
   n=n+1; g2f[[n]] = list( genus = "Eurycoma"           , family = "Simaroubaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Euterpe"            , family = "Arecaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Euxylophora"        , family = "Rutaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Fagraea"            , family = "Gentianaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Faramea"            , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Ferdinandusa"       , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Ficus"              , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Fraunhofera"        , family = "Celastraceae"      )
   n=n+1; g2f[[n]] = list( genus = "Funtumia"           , family = "Apocynaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Fusaea"             , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Galipea"            , family = "Rutaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Gallesia"           , family = "Phytolaccaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Garcinia"           , family = "Clusiaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Gaulettia"          , family = "Chrysobalanaceae"  )
   n=n+1; g2f[[n]] = list( genus = "Geissospermum"      , family = "Apocynaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Genipa"             , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Gilbertiodendron"   , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Glycydendron"       , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Goupia"             , family = "Goupiaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Guamia"             , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Guapira"            , family = "Nyctaginaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Guarea"             , family = "Meliaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Guatteria"          , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Guazuma"            , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Gustavia"           , family = "Lecythidaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Hampea"             , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Handroanthus"       , family = "Bignoniaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Hebepetalum"        , family = "Linaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Heisteria"          , family = "Olacaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Helianthostylis"    , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Helicostylis"       , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Heliocarpus"        , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Henriettea"         , family = "Melastomataceae"   )
   n=n+1; g2f[[n]] = list( genus = "Henriettella"       , family = "Melastomataceae"   )
   n=n+1; g2f[[n]] = list( genus = "Heteropogon"        , family = "Poaceae"           )
   n=n+1; g2f[[n]] = list( genus = "Hevea"              , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Hibiscus"           , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Hieronyma"          , family = "Phyllanthaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Himatanthus"        , family = "Apocynaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Hippocratea"        , family = "Celastraceae"      )
   n=n+1; g2f[[n]] = list( genus = "Hirtella"           , family = "Chrysobalanaceae"  )
   n=n+1; g2f[[n]] = list( genus = "Homalium"           , family = "Salicaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Humiria"            , family = "Humiriaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Humiriastrum"       , family = "Humiriaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Hura"               , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Hymenaea"           , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Hymenolobium"       , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Ignotum"            , family = "Ignotaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Ilex"               , family = "Aquifoliaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Inga"               , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Iryanthera"         , family = "Myristicaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Isertia"            , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Ixonanthes"         , family = "Ixonanthaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Ixora"              , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Jacaranda"          , family = "Bignoniaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Jacaratia"          , family = "Caricaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Jatropha"           , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Joannesia"          , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Justicia"           , family = "Acanthaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Lacistema"          , family = "Lacistemataceae"   )
   n=n+1; g2f[[n]] = list( genus = "Lacmellea"          , family = "Apocynaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Lacunaria"          , family = "Ochnaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Ladenbergia"        , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Laetia"             , family = "Salicaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Lafoensia"          , family = "Lythraceae"        )
   n=n+1; g2f[[n]] = list( genus = "Laportea"           , family = "Urticaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Lecythis"           , family = "Lecythidaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Leonia"             , family = "Violaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Leptaulus"          , family = "Cardiopteridaceae" )
   n=n+1; g2f[[n]] = list( genus = "Liana"              , family = "Lianaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Librevillea"        , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Licania"            , family = "Chrysobalanaceae"  )
   n=n+1; g2f[[n]] = list( genus = "Licaria"            , family = "Lauraceae"         )
   n=n+1; g2f[[n]] = list( genus = "Lindackeria"        , family = "Achariaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Lippia"             , family = "Verbenaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Lonchocarpus"       , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Lophira"            , family = "Ochnaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Luehea"             , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Lueheopsis"         , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Lumnitzera"         , family = "Combretaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Lunania"            , family = "Salicaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Mabea"              , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Macaranga"          , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Machaerium"         , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Macoubea"           , family = "Apocynaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Macrocnemum"        , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Macrolobium"        , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Madhuca"            , family = "Sapotaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Mallotus"           , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Malouetia"          , family = "Apocynaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Mammea"             , family = "Calophyllaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Mangifera"          , family = "Anacardiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Manicaria"          , family = "Arecaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Manihot"            , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Manilkara"          , family = "Sapotaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Mansoa"             , family = "Bignoniaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Maprounea"          , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Maquira"            , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Marcgravia"         , family = "Marcgraviaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Markhamia"          , family = "Bignoniaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Margaritaria"       , family = "Phyllanthaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Marlierea"          , family = "Myrtaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Matayba"            , family = "Sapindaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Matisia"            , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Mauritia"           , family = "Arecaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Mauritiella"        , family = "Arecaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Mayna"              , family = "Achariaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Maytenus"           , family = "Celastraceae"      )
   n=n+1; g2f[[n]] = list( genus = "Melastoma"          , family = "Melastomataceae"   )
   n=n+1; g2f[[n]] = list( genus = "Melicoccus"         , family = "Sapindaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Metrodorea"         , family = "Rutaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Metrosideros"       , family = "Myrtaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Mezilaurus"         , family = "Lauraceae"         )
   n=n+1; g2f[[n]] = list( genus = "Miconia"            , family = "Melastomataceae"   )
   n=n+1; g2f[[n]] = list( genus = "Micrandra"          , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Micrandropsis"      , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Micropholis"        , family = "Sapotaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Mikania"            , family = "Asteraceae"        )
   n=n+1; g2f[[n]] = list( genus = "Millettia"          , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Mimosa"             , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Minquartia"         , family = "Olacaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Misanteca"          , family = "Lauraceae"         )
   n=n+1; g2f[[n]] = list( genus = "Monocarpia"         , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Monopteryx"         , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Morisonia"          , family = "Capparaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Moronobea"          , family = "Clusiaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Mortoniodendron"    , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Mouriri"            , family = "Melastomataceae"   )
   n=n+1; g2f[[n]] = list( genus = "Mucuna"             , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Myracrodruon"       , family = "Anacardiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Myrocarpus"         , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Myrcia"             , family = "Myrtaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Myrciaria"          , family = "Myrtaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Myrica"             , family = "Myricaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Myriocarpa"         , family = "Urticaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Myroxylon"          , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Myrsine"            , family = "Primulaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Naucleopsis"        , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Nectandra"          , family = "Lauraceae"         )
   n=n+1; g2f[[n]] = list( genus = "Neea"               , family = "Nyctaginaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Nephrolepis"        , family = "Davalliaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Ochroma"            , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Ocotea"             , family = "Lauraceae"         )
   n=n+1; g2f[[n]] = list( genus = "Oenocarpus"         , family = "Arecaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Omphalea"           , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Onychopetalum"      , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Oreopanax"          , family = "Araliaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Ormosia"            , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Orthion"            , family = "Violaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Osteophloeum"       , family = "Myristicaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Ouratea"            , family = "Ochnaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Oxandra"            , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Pachira"            , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Palicourea"         , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Parahancornia"      , family = "Apocynaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Paraia"             , family = "Lauraceae"         )
   n=n+1; g2f[[n]] = list( genus = "Parashorea"         , family = "Dipterocarpaceae"  )
   n=n+1; g2f[[n]] = list( genus = "Parathesis"         , family = "Primulaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Parinari"           , family = "Chrysobalanaceae"  )
   n=n+1; g2f[[n]] = list( genus = "Parkia"             , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Paullinia"          , family = "Sapindaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Pausandra"          , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Paypayrola"         , family = "Violaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Peltogyne"          , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Pera"               , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Perebea"            , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Peridiscus"         , family = "Peridiscaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Phenakospermum"     , family = "Strelitziaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Piper"              , family = "Piperaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Piptadenia"         , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Piptocarpha"        , family = "Asteraceae"        )
   n=n+1; g2f[[n]] = list( genus = "Pipturus"           , family = "Urticaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Pithecellobium"     , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Planchonella"       , family = "Sapotaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Plathymenia"        , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Platonia"           , family = "Clusiaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Platymiscium"       , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Platypodium"        , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Pleiostachya"       , family = "Marantaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Plenckia"           , family = "Celastraceae"      )
   n=n+1; g2f[[n]] = list( genus = "Pleuranthodendron"  , family = "Salicaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Podocarpus"         , family = "Podocarpaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Poeppigia"          , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Poecilanthe"        , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Pogonophora"        , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Polyscias"          , family = "Araliaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Poraqueiba"         , family = "Icacinaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Posoqueria"         , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Poulsenia"          , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Pourouma"           , family = "Urticaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Pouteria"           , family = "Sapotaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Pradosia"           , family = "Sapotaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Prioria"            , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Protium"            , family = "Burseraceae"       )
   n=n+1; g2f[[n]] = list( genus = "Protomegabaria"     , family = "Phyllanthaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Prunus"             , family = "Rosaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Pseudima"           , family = "Sapindaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Pseudobombax"       , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Pseudolmedia"       , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Pseudopiptadenia"   , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Pseudoxandra"       , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Psidium"            , family = "Myrtaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Psychotria"         , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Pterandra"          , family = "Malpighiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Pterocarpus"        , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Ptychopetalum"      , family = "Olacaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Ptychopyxis"        , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Qualea"             , family = "Vochysiaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Quararibea"         , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Quiina"             , family = "Ochnaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Raputia"            , family = "Rutaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Rauvolfia"          , family = "Apocynaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Recordoxylon"       , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Retiniphyllum"      , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Rhabdodendron"      , family = "Rhabdodendraceae"  )
   n=n+1; g2f[[n]] = list( genus = "Rhizophora"         , family = "Rhizophoraceae"    )
   n=n+1; g2f[[n]] = list( genus = "Rhodamnia"          , family = "Myrtaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Rhodostemonodaphne" , family = "Lauraceae"         )
   n=n+1; g2f[[n]] = list( genus = "Richeria"           , family = "Phyllanthaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Rinorea"            , family = "Violaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Robinsonella"       , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Rollinia"           , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Roseodendron"       , family = "Bignoniaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Roucheria"          , family = "Linaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Roupala"            , family = "Proteaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Ruizterania"        , family = "Vochysiaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Ryania"             , family = "Salicaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Sacoglottis"        , family = "Humiriaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Sagotia"            , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Salacia"            , family = "Celastraceae"      )
   n=n+1; g2f[[n]] = list( genus = "Sapium"             , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Sarcaulus"          , family = "Sapotaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Scaevola"           , family = "Goodeniaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Schefflera"         , family = "Araliaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Schinopsis"         , family = "Anacardiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Schizolobium"       , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Sclerolobium"       , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Scleronema"         , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Scyphiphora"        , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Senefeldera"        , family = "Euphorbiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Senna"              , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Sextonia"           , family = "Lauraceae"         )
   n=n+1; g2f[[n]] = list( genus = "Shorea"             , family = "Dipterocarpaceae"  )
   n=n+1; g2f[[n]] = list( genus = "Simaba"             , family = "Simaroubaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Simarouba"          , family = "Simaroubaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Siparuna"           , family = "Siparunaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Sloanea"            , family = "Elaeocarpaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Socratea"           , family = "Arecaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Solanum"            , family = "Solanaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Sonneratia"         , family = "Lythraceae"        )
   n=n+1; g2f[[n]] = list( genus = "Sorocea"            , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Spondias"           , family = "Anacardiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Stemmadenia"        , family = "Apocynaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Sterculia"          , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Sterigmapetalum"    , family = "Rhizophoraceae"    )
   n=n+1; g2f[[n]] = list( genus = "Strombosia"         , family = "Olacaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Strychnos"          , family = "Loganiaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Stryphnodendron"    , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Styrax"             , family = "Styracaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Swartzia"           , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Swietenia"          , family = "Meliaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Syagrus"            , family = "Arecaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Symphonia"          , family = "Clusiaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Syzygium"           , family = "Myrtaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Tabebuia"           , family = "Bignoniaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Tabernaemontana"    , family = "Apocynaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Tachigali"          , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Talisia"            , family = "Sapindaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Tamarindus"         , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Tapirira"           , family = "Anacardiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Tapura"             , family = "Dichapetalaceae"   )
   n=n+1; g2f[[n]] = list( genus = "Taralea"            , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Tarenna"            , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Teclea"             , family = "Rutaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Tectona"            , family = "Lamiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Terminalia"         , family = "Combretaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Tetragastris"       , family = "Burseraceae"       )
   n=n+1; g2f[[n]] = list( genus = "Theobroma"          , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Thespesia"          , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Thyrsodium"         , family = "Anacardiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Tocoyena"           , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Toulicia"           , family = "Sapindaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Touroulia"          , family = "Ochnaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Tovomita"           , family = "Clusiaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Trattinnickia"      , family = "Burseraceae"       )
   n=n+1; g2f[[n]] = list( genus = "Trema"              , family = "Cannabaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Trichilia"          , family = "Meliaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Trichoscypha"       , family = "Anacardiaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Trichospermum"      , family = "Malvaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Trigonobalanus"     , family = "Fagaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Trilepisium"        , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Tristaniopsis"      , family = "Myrtaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Trophis"            , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Trymatococcus"      , family = "Moraceae"          )
   n=n+1; g2f[[n]] = list( genus = "Turpinia"           , family = "Staphyleaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Uapaca"             , family = "Phyllanthaceae"    )
   n=n+1; g2f[[n]] = list( genus = "Unonopsis"          , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Urera"              , family = "Urticaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Vantanea"           , family = "Humiriaceae"       )
   n=n+1; g2f[[n]] = list( genus = "Vatairea"           , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Vataireopsis"       , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Vernonia"           , family = "Asteraceae"        )
   n=n+1; g2f[[n]] = list( genus = "Viguieranthus"      , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Virola"             , family = "Myristicaceae"     )
   n=n+1; g2f[[n]] = list( genus = "Vismia"             , family = "Hypericaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Vitex"              , family = "Lamiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Vochysia"           , family = "Vochysiaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Votomita"           , family = "Melastomataceae"   )
   n=n+1; g2f[[n]] = list( genus = "Vouacapoua"         , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Warszewiczia"       , family = "Rubiaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Xanthophyllum"      , family = "Polygalaceae"      )
   n=n+1; g2f[[n]] = list( genus = "Ximenia"            , family = "Olacaceae"         )
   n=n+1; g2f[[n]] = list( genus = "Xylopia"            , family = "Annonaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Zanthoxylum"        , family = "Rutaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Ziziphus"           , family = "Rhamnaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Zollernia"          , family = "Fabaceae"          )
   n=n+1; g2f[[n]] = list( genus = "Zuelania"           , family = "Salicaceae"        )
   n=n+1; g2f[[n]] = list( genus = "Zygia"              , family = "Fabaceae"          )
   #---------------------------------------------------------------------------------------#



   #----- Convert the g2f list into a data frame. -----------------------------------------#
   g2f = list.2.data.frame(g2f)
   #---------------------------------------------------------------------------------------#



   #---------------------------------------------------------------------------------------#
   #     Check whether the family has all genera needed.                                   #
   #---------------------------------------------------------------------------------------#
   idx = which( ( ! is.na(datum$genus) ) 
              & ( ! datum$genus %in% g2f$genus )
              & ( regexpr(pattern="Ignotum",text=datum$genus,ignore.case=TRUE) %==% -1)
              )#end which
   if (length(idx) > 0){
     tofill.gen = t(t(sort(unique(datum$genus[idx]))))
     toshow     = which(names(datum) %in% c("trans","tag","x","y","scientific","family"))
     toshow     = datum[idx,toshow]
     toshow     = toshow[order(toshow[,"scientific"]),]
     toshow     = toshow[! duplicated(toshow[,"scientific"]),]
     cat0("-----------------------------------------------------------")
     cat0(" You must add genera to g2f:")
     cat0(" ")
     print(toshow,quote=FALSE)
     cat0("-----------------------------------------------------------")
     cat0(" ")
     browser()
   }#end if
   #---------------------------------------------------------------------------------------#




   #---------------------------------------------------------------------------------------#
   #     List the default name for all families if genera was unknown.                     #
   #---------------------------------------------------------------------------------------#
   n=0  ; f2nog      = list()
   n=n+1; f2nog[[n]] = list(family = "Acanthaceae"      , genus = "Ignotum.acanthus"      )
   n=n+1; f2nog[[n]] = list(family = "Achariaceae"      , genus = "Ignotum.acharia"       )
   n=n+1; f2nog[[n]] = list(family = "Anacardiaceae"    , genus = "Ignotum.anacardium"    )
   n=n+1; f2nog[[n]] = list(family = "Anisophylleaceae" , genus = "Ignotum.anisophyllea"  )
   n=n+1; f2nog[[n]] = list(family = "Annonaceae"       , genus = "Ignotum.annona"        )
   n=n+1; f2nog[[n]] = list(family = "Apocynaceae"      , genus = "Ignotum.apocynum"      )
   n=n+1; f2nog[[n]] = list(family = "Aquifoliaceae"    , genus = "Ignotum.ilex"          )
   n=n+1; f2nog[[n]] = list(family = "Araliaceae"       , genus = "Ignotum.aralia"        )
   n=n+1; f2nog[[n]] = list(family = "Arecaceae"        , genus = "Ignotum.areca"         )
   n=n+1; f2nog[[n]] = list(family = "Asteraceae"       , genus = "Ignotum.aster"         )
   n=n+1; f2nog[[n]] = list(family = "Bignoniaceae"     , genus = "Ignotum.bignonia"      )
   n=n+1; f2nog[[n]] = list(family = "Bixaceae"         , genus = "Ignotum.bixa"          )
   n=n+1; f2nog[[n]] = list(family = "Boraginaceae"     , genus = "Ignotum.borago"        )
   n=n+1; f2nog[[n]] = list(family = "Burseraceae"      , genus = "Ignotum.bursera"       )
   n=n+1; f2nog[[n]] = list(family = "Brachytheciaceae" , genus = "Ignotum.brachythecium" )
   n=n+1; f2nog[[n]] = list(family = "Cactaceae"        , genus = "Ignotum.cactus"        )
   n=n+1; f2nog[[n]] = list(family = "Calophyllaceae"   , genus = "Ignotum.calophyllum"   )
   n=n+1; f2nog[[n]] = list(family = "Calycanthaceae"   , genus = "Ignotum.calycanthus"   )
   n=n+1; f2nog[[n]] = list(family = "Cannabaceae"      , genus = "Ignotum.cannabis"      )
   n=n+1; f2nog[[n]] = list(family = "Capparaceae"      , genus = "Ignotum.capparis"      )
   n=n+1; f2nog[[n]] = list(family = "Cardiopteridaceae", genus = "Ignotum.cardiopteris"  )
   n=n+1; f2nog[[n]] = list(family = "Caricaceae"       , genus = "Ignotum.carica"        )
   n=n+1; f2nog[[n]] = list(family = "Caryocaraceae"    , genus = "Ignotum.caryocar"      )
   n=n+1; f2nog[[n]] = list(family = "Celastraceae"     , genus = "Ignotum.celastrus"     )
   n=n+1; f2nog[[n]] = list(family = "Chrysobalanaceae" , genus = "Ignotum.chrysobalanus" )
   n=n+1; f2nog[[n]] = list(family = "Clusiaceae"       , genus = "Ignotum.clusia"        )
   n=n+1; f2nog[[n]] = list(family = "Combretaceae"     , genus = "Ignotum.combretum"     )
   n=n+1; f2nog[[n]] = list(family = "Connaraceae"      , genus = "Ignotum.connarus"      )
   n=n+1; f2nog[[n]] = list(family = "Convolvulaceae"   , genus = "Ignotum.convolvulus"   )
   n=n+1; f2nog[[n]] = list(family = "Davalliaceae"     , genus = "Ignotum.davallia"      )
   n=n+1; f2nog[[n]] = list(family = "Dichapetalaceae"  , genus = "Ignotum.dichapetalum"  )
   n=n+1; f2nog[[n]] = list(family = "Dilleniaceae"     , genus = "Ignotum.dillenia"      )
   n=n+1; f2nog[[n]] = list(family = "Dipterocarpaceae" , genus = "Ignotum.dipterocarpus" )
   n=n+1; f2nog[[n]] = list(family = "Ebenaceae"        , genus = "Ignotum.ebenus"        )
   n=n+1; f2nog[[n]] = list(family = "Elaeocarpaceae"   , genus = "Ignotum.elaeocarpus"   )
   n=n+1; f2nog[[n]] = list(family = "Emmotaceae"       , genus = "Ignotum.emmotum"       )
   n=n+1; f2nog[[n]] = list(family = "Erythroxylaceae"  , genus = "Ignotum.erythroxylum"  )
   n=n+1; f2nog[[n]] = list(family = "Euphorbiaceae"    , genus = "Ignotum.euphorbia"     )
   n=n+1; f2nog[[n]] = list(family = "Fabaceae"         , genus = "Ignotum.faba"          )
   n=n+1; f2nog[[n]] = list(family = "Fagaceae"         , genus = "Ignotum.fagus"         )
   n=n+1; f2nog[[n]] = list(family = "Gentianaceae"     , genus = "Ignotum.gentiana"      )
   n=n+1; f2nog[[n]] = list(family = "Gleicheniaceae"   , genus = "Ignotum.gleichenia"    )
   n=n+1; f2nog[[n]] = list(family = "Goodeniaceae"     , genus = "Ignotum.goodenia"      )
   n=n+1; f2nog[[n]] = list(family = "Goupiaceae"       , genus = "Goupia"                )
   n=n+1; f2nog[[n]] = list(family = "Humiriaceae"      , genus = "Ignotum.humiria"       )
   n=n+1; f2nog[[n]] = list(family = "Hypericaceae"     , genus = "Ignotum.hypericum"     )
   n=n+1; f2nog[[n]] = list(family = "Icacinaceae"      , genus = "Ignotum.icacina"       )
   n=n+1; f2nog[[n]] = list(family = "Ignotaceae"       , genus = "Ignotum"               )
   n=n+1; f2nog[[n]] = list(family = "Ixonanthaceae"    , genus = "Ignotum.ixonanthes"    )
   n=n+1; f2nog[[n]] = list(family = "Lacistemataceae"  , genus = "Ignotum.lacistema"     )
   n=n+1; f2nog[[n]] = list(family = "Lamiaceae"        , genus = "Ignotum.lamium"        )
   n=n+1; f2nog[[n]] = list(family = "Lauraceae"        , genus = "Ignotum.laurus"        )
   n=n+1; f2nog[[n]] = list(family = "Lecythidaceae"    , genus = "Ignotum.lecythis"      )
   n=n+1; f2nog[[n]] = list(family = "Lianaceae"        , genus = "Liana"                 )
   n=n+1; f2nog[[n]] = list(family = "Linaceae"         , genus = "Ignotum.linum"         )
   n=n+1; f2nog[[n]] = list(family = "Loganiaceae"      , genus = "Ignotum.logania"       )
   n=n+1; f2nog[[n]] = list(family = "Lythraceae"       , genus = "Ignotum.lythrum"       )
   n=n+1; f2nog[[n]] = list(family = "Malpighiaceae"    , genus = "Ignotum.malpighia"     )
   n=n+1; f2nog[[n]] = list(family = "Malvaceae"        , genus = "Ignotum.malva"         )
   n=n+1; f2nog[[n]] = list(family = "Marantaceae"      , genus = "Ignotum.maranta"       )
   n=n+1; f2nog[[n]] = list(family = "Marcgraviaceae"   , genus = "Ignotum.marcgravia"    )
   n=n+1; f2nog[[n]] = list(family = "Melastomataceae"  , genus = "Ignotum.melastoma"     )
   n=n+1; f2nog[[n]] = list(family = "Menispermaceae"   , genus = "Ignotum.menispermum"   )
   n=n+1; f2nog[[n]] = list(family = "Meliaceae"        , genus = "Ignotum.melia"         )
   n=n+1; f2nog[[n]] = list(family = "Moraceae"         , genus = "Ignotum.morus"         )
   n=n+1; f2nog[[n]] = list(family = "Myricaceae"       , genus = "Ignotum.myrica"        )
   n=n+1; f2nog[[n]] = list(family = "Myristicaceae"    , genus = "Ignotum.myristica"     )
   n=n+1; f2nog[[n]] = list(family = "Myrtaceae"        , genus = "Ignotum.myrtus"        )
   n=n+1; f2nog[[n]] = list(family = "Nyctaginaceae"    , genus = "Ignotum.nyctaginia"    )
   n=n+1; f2nog[[n]] = list(family = "Ochnaceae"        , genus = "Ignotum.ochna"         )
   n=n+1; f2nog[[n]] = list(family = "Olacaceae"        , genus = "Ignotum.olax"          )
   n=n+1; f2nog[[n]] = list(family = "Oleaceae"         , genus = "Ignotum.olea"          )
   n=n+1; f2nog[[n]] = list(family = "Opiliaceae"       , genus = "Ignotum.opilia"        )
   n=n+1; f2nog[[n]] = list(family = "Passifloraceae"   , genus = "Ignotum.passiflora"    )
   n=n+1; f2nog[[n]] = list(family = "Pentaphylacaceae" , genus = "Ignotum.pentaphylax"   )
   n=n+1; f2nog[[n]] = list(family = "Peridiscaceae"    , genus = "Ignotum.peridiscus"    )
   n=n+1; f2nog[[n]] = list(family = "Phyllanthaceae"   , genus = "Ignotum.phyllanthus"   )
   n=n+1; f2nog[[n]] = list(family = "Phytolaccaceae"   , genus = "Ignotum.phytolacca"    )
   n=n+1; f2nog[[n]] = list(family = "Piperaceae"       , genus = "Ignotum.piper"         )
   n=n+1; f2nog[[n]] = list(family = "Poaceae"          , genus = "Ignotum.poa"           )
   n=n+1; f2nog[[n]] = list(family = "Podocarpaceae"    , genus = "Ignotum.podocarpus"    )
   n=n+1; f2nog[[n]] = list(family = "Polygalaceae"     , genus = "Ignotum.polygala"      )
   n=n+1; f2nog[[n]] = list(family = "Polygonaceae"     , genus = "Ignotum.polygonum"     )
   n=n+1; f2nog[[n]] = list(family = "Primulaceae"      , genus = "Ignotum.primula"       )
   n=n+1; f2nog[[n]] = list(family = "Proteaceae"       , genus = "Ignotum.protea"        )
   n=n+1; f2nog[[n]] = list(family = "Putranjivaceae"   , genus = "Ignotum.putranjiva"    )
   n=n+1; f2nog[[n]] = list(family = "Rhabdodendraceae" , genus = "Ignotum.rhabdodendron" )
   n=n+1; f2nog[[n]] = list(family = "Rhabdodendraceae" , genus = "Ignotum.rhabdodendron" )
   n=n+1; f2nog[[n]] = list(family = "Rhamnaceae"       , genus = "Ignotum.rhamnus"       )
   n=n+1; f2nog[[n]] = list(family = "Rhizophoraceae"   , genus = "Ignotum.rhizophora"    )
   n=n+1; f2nog[[n]] = list(family = "Rosaceae"         , genus = "Ignotum.rosa"          )
   n=n+1; f2nog[[n]] = list(family = "Rubiaceae"        , genus = "Ignotum.rubia"         )
   n=n+1; f2nog[[n]] = list(family = "Rutaceae"         , genus = "Ignotum.ruta"          )
   n=n+1; f2nog[[n]] = list(family = "Salicaceae"       , genus = "Ignotum.salix"         )
   n=n+1; f2nog[[n]] = list(family = "Sapindaceae"      , genus = "Ignotum.sapindus"      )
   n=n+1; f2nog[[n]] = list(family = "Sapotaceae"       , genus = "Ignotum.sapota"        )
   n=n+1; f2nog[[n]] = list(family = "Simaroubaceae"    , genus = "Ignotum.simarouba"     )
   n=n+1; f2nog[[n]] = list(family = "Siparunaceae"     , genus = "Ignotum.siparuna"      )
   n=n+1; f2nog[[n]] = list(family = "Solanaceae"       , genus = "Ignotum.solanum"       )
   n=n+1; f2nog[[n]] = list(family = "Staphyleaceae"    , genus = "Ignotum.staphylea"     )
   n=n+1; f2nog[[n]] = list(family = "Stemonuraceae"    , genus = "Ignotum.stemonurus"    )
   n=n+1; f2nog[[n]] = list(family = "Strelitziaceae"   , genus = "Ignotum.strelitzia"    )
   n=n+1; f2nog[[n]] = list(family = "Styracaceae"      , genus = "Ignotum.styrax"        )
   n=n+1; f2nog[[n]] = list(family = "Ulmaceae"         , genus = "Ignotum.ulmus"         )
   n=n+1; f2nog[[n]] = list(family = "Urticaceae"       , genus = "Ignotum.urtica"        )
   n=n+1; f2nog[[n]] = list(family = "Verbenaceae"      , genus = "Ignotum.verbena"       )
   n=n+1; f2nog[[n]] = list(family = "Violaceae"        , genus = "Ignotum.viola"         )
   n=n+1; f2nog[[n]] = list(family = "Vitaceae"         , genus = "Ignotum.vitis"         )
   n=n+1; f2nog[[n]] = list(family = "Vochysiaceae"     , genus = "Ignotum.vochysia"      )
   n=n+1; f2nog[[n]] = list(family = "Winteraceae"      , genus = "Ignotum.wintera"       )
   #---------------------------------------------------------------------------------------#





   #----- Convert the g2f list into a data frame. -----------------------------------------#
   f2nog = list.2.data.frame(f2nog)
   #---------------------------------------------------------------------------------------#




   #---------------------------------------------------------------------------------------#
   #     Check whether there are families missing in f2nog look up table.                  #
   #---------------------------------------------------------------------------------------#
   idx = which(! g2f$family %in% f2nog$family)
   if (length(idx) > 0){
     cat(" You must add families to f2nog...","\n")
     family.tofill = t(t(sort(unique(g2f$family[idx]))))
     browser()
   }#end if
   #---------------------------------------------------------------------------------------#



   #---------------------------------------------------------------------------------------#
   #     Fill in non-informative genus for individual with known family but unknown genus. #
   #---------------------------------------------------------------------------------------#
   yes.gen = ! is.na(datum$genus ) & regexpr(pattern="Ignotum"   ,text=datum$genus ) %<% 0
   yes.fam = ! is.na(datum$family) & regexpr(pattern="Ignotaceae",text=datum$family) %<% 0
   nothing = ! yes.gen & ! yes.fam
   no.gen  = ! yes.gen &   yes.fam
   #------ No information whatsoever.  Fill in with non-informative taxa. -----------------#
   datum$genus      [nothing] = "Ignotum"
   datum$scientific [nothing] = "Ignotum NA"
   datum$family     [nothing] = "Ignotaceae"
   #------ No genus, family only. ---------------------------------------------------------#
   idx                        = match(datum$family[no.gen],f2nog$family)
   datum$genus      [no.gen ] = f2nog$genus[idx]
   datum$scientific [no.gen ] = paste(datum$genus[no.gen],NA_character_,sep=" ")
   #------ Genus is known. ----------------------------------------------------------------#
   idx                        = match(datum$genus[yes.gen],g2f$genus)
   datum$family     [yes.gen] = g2f$family [idx]
   #---------------------------------------------------------------------------------------#

   return(datum)
}#end function
#==========================================================================================#
#==========================================================================================#






#==========================================================================================#
#==========================================================================================#
#      This attributes scientific names based on common names for surveys carried out by   #
# the Sustainable Landscapes team.  It is not a good idea to use this function for any     #
# other data sets because common names may mean completely different things for other      #
# lads.                                                                                    #
#------------------------------------------------------------------------------------------#
scientific.lookup.SL <<- function(datum,lookup.path){
   #----- Append columns in case they don't exist. ----------------------------------------#
   if (! "scientific"    %in% names(datum)){
      datum$scientific    = rep(NA_character_, nrow(datum))
   }#end if (! "scientific"    %in% names(datum))
   if (! "genus"         %in% names(datum)){
      datum$genus         = rep(NA_character_, nrow(datum)) 
   }#end if (! "scientific"    %in% names(datum))
   if (! "gf.scientific" %in% names(datum)){
      datum$gf.scientific = rep(0, nrow(datum))
   }#end if (! "gf.scientific" %in% names(datum))
   #---------------------------------------------------------------------------------------#


   #----- Read in the look-up table. ------------------------------------------------------#
   lookup.file = paste(lookup.path,"SL_taxon_lookup.csv",sep="/")
   look.up = read.csv(file=lookup.file,stringsAsFactors=FALSE)
   look.up$common     = tolower(trim(look.up$common    ))
   look.up$scientific = trim(look.up$scientific)
   look.up$family     = trim(look.up$family    )
   #---------------------------------------------------------------------------------------#
        
        
        
   #----- Break into genus and species. ---------------------------------------------------#
   gs.list                  = sapply(X = tolower(look.up$scientific),FUN=strsplit,split=" ")
   gs.length                = sapply(X = gs.list, FUN = length)
   gs.mat                   = cbind( mapply(FUN="[",gs.list,MoreArgs=list(1))
                                     , mapply(FUN="[",gs.list,MoreArgs=list(2))
   )#end cbind
   g                        = capwords(gs.mat[,1],strict=TRUE)
   s                        = tolower(gs.mat[,2])
   g.s                      = paste(g,s,sep=" ")
   g.s[is.na(g) & is.na(s)] = NA
   look.up$scientific       = g.s
   look.up$genus            = g
   #---------------------------------------------------------------------------------------#
   
   
   
   #----- Trim the common names, and simplify/replace some names. -------------------------#
   datum$common                      = tolower(trim(datum$common))
   datum$common[is.na(datum$common)] = "mato"
   #---------------------------------------------------------------------------------------#
        
        
       
   #----- Find all unique common names. ---------------------------------------------------#
   unique.common = unique(datum$common)
   n.common      = length(unique.common)
   notfound      = NULL
   for (n in sequence(n.common)){
      #----- Find the trees that have the same common name as this one. -------------------#
      cat (" - ",n,"/",n.common," -- ",unique.common[n],"\n")
      w.dat  = which(datum$common %in% unique.common[n])
      n.dat  = length(w.dat)
      #------------------------------------------------------------------------------------#
      
      
      #----- Find the trees in the look-up table with the same common name. ---------------#
      w.look = which(look.up$common %in% unique.common[n])
      n.look = length(w.look)
      #------------------------------------------------------------------------------------#
      
      
      
      #------------------------------------------------------------------------------------#
      #      Check how many trees have the same common name in the look-up table.          #
      #------------------------------------------------------------------------------------#
      if (n.look >= 1){
         #---------------------------------------------------------------------------------#
         #   In case only one scientific name has been matched, this will allocate the     #
         # same scientific name for all selected individuals, otherwise this will randomly #
         # attribute the scientific names.                                                 #
         #---------------------------------------------------------------------------------#
         w.look                     = lit.sample(x=w.look,size=n.dat,replace=TRUE)
         #---------------------------------------------------------------------------------#


         #----- Only one.  Use it. --------------------------------------------------------#
         datum$scientific   [w.dat] = look.up$scientific[w.look]
         datum$genus        [w.dat] = look.up$genus     [w.look]
         datum$gf.scientific[w.dat] = 1
         #---------------------------------------------------------------------------------#
      }else{
         #----- Not found in the data base, warn the user. --------------------------------#
         notfound                   = c(notfound,unique.common[n])
         datum$scientific   [w.dat] = "Ignotum"
         datum$genus        [w.dat] = "Ignotum"
         datum$gf.scientific[w.dat] = 0
         #---------------------------------------------------------------------------------#
      }#end if
      #------------------------------------------------------------------------------------#
   }#end for
   #---------------------------------------------------------------------------------------#
   return(datum)
}#end function
#==========================================================================================#
#==========================================================================================#






#==========================================================================================#
#==========================================================================================#
#      This function is a look-up table for scientific names given the common name.  The   #
# look up table came from the reference below and from the first survey in 1999, and it is #
# probably fine for Km 67 but not other places as they may be regional names and they may  #
# refer to a completely different plant elsewhere.  Only the trees that occurred in the    #
# survey were added, feel free to complete the list...                                     #
#                                                                                          #
# Silva, J. N. M.; Carvalho, J. O. P.; Lopes, J. C. A., 1985: Forest inventory of an       #
#     experimental area in the Tapajos National Forest.  Boletim de Pesquisa Florestal,    #
#     n. 10/11, p.38--110.                                                                 #
#------------------------------------------------------------------------------------------#
scientific.lookup.tnf <<- function(datum){
   n.datum = nrow(datum)

   #----- Look-up table, feel free to add more trees here. --------------------------------#
   tnf        = list()
   tnf[[  1]] = list( common     = "abiu"                      
                    , scientific = "Pouteria reticulata"             
                    )#end list
   tnf[[  2]] = list( common     = "abiu branco"               
                    , scientific = "Pradosia ptychandra"             
                    )#end list
   tnf[[  3]] = list( common     = "abiu cutite"               
                    , scientific = "Pouteria macrophylla"            
                    )#end list
   tnf[[  4]] = list( common     = "abiu cutite folha verde"   
                    , scientific = "Pouteria venosa"                 
                    )#end list
   tnf[[  5]] = list( common     = "abiu vermelho"             
                    , scientific = "Pouteria torta"                  
                    )#end list
   tnf[[  6]] = list( common     = "abiu-casca-grossa"         
                    , scientific = "Pouteria bilocularis"            
                    )#end list
   tnf[[  7]] = list( common     = "abiu-mangabinha"           
                    , scientific = "Micropholis egensis"             
                    )#end list
   tnf[[  8]] = list( common     = "abiurana"                  
                    , scientific = "Pouteria torta"                  
                    )#end list
   tnf[[  9]] = list( common     = "abiurana vermelha"         
                    , scientific = "Pouteria torta"                  
                    )#end list
   tnf[[ 10]] = list( common     = "acariquara"                
                    , scientific = "Minquartia guianensis"           
                    )#end list
   tnf[[ 11]] = list( common     = "acoita-cavalo"             
                    , scientific = "Lueheopsis duckeana"             
                    )#end list
   tnf[[ 12]] = list( common     = "amapa"                     
                    , scientific = "Brosimum"                        
                    )#end list
   tnf[[ 13]] = list( common     = "amapa amargoso"            
                    , scientific = "Brosimum guianense"              
                    )#end list
   tnf[[ 14]] = list( common     = "amapa doce"                
                    , scientific = "Brosimum parinarioides"          
                    )#end list
   tnf[[ 15]] = list( common     = "amapai"                    
                    , scientific = "Brosimum lactescens"             
                    )#end list
   tnf[[ 16]] = list( common     = "amaparana"                 
                    , scientific = "Thyrsodium spruceanum"           
                    )#end list
   tnf[[ 17]] = list( common     = "amarelao"                  
                    , scientific = "Apuleia leiocarpa"               
                    )#end list
   tnf[[ 18]] = list( common     = "anani"                     
                    , scientific = "Symphonia globulifera"           
                    )#end list
   tnf[[ 19]] = list( common     = "andiroba"                  
                    , scientific = "Carapa guianensis"               
                    )#end list
   tnf[[ 20]] = list( common     = "andirobarana"              
                    , scientific = "Guarea macrophylla"              
                    )#end list
   tnf[[ 21]] = list( common     = "angelim da mata"           
                    , scientific = "Hymenolobium excelsum"           
                    )#end list
   tnf[[ 22]] = list( common     = "angelim rajado"            
                    , scientific = "Zygia racemosa"                  
                    )#end list
   tnf[[ 23]] = list( common     = "angelim vermelho"          
                    , scientific = "Hymenolobium"                    
                    )#end list
   tnf[[ 24]] = list( common     = "apui"                      
                    , scientific = "Ficus broadwayi"                 
                    )#end list
   tnf[[ 25]] = list( common     = "araca da mata"             
                    , scientific = "Eugenia patrisii"                
                    )#end list
   tnf[[ 26]] = list( common     = "araracanga"                
                    , scientific = "Aspidosperma eteanum"            
                    )#end list
   tnf[[ 27]] = list( common     = "araticum"                  
                    , scientific = "Annona densicoma"                
                    )#end list
   tnf[[ 28]] = list( common     = "aroeira"                   
                    , scientific = "Astronium lecointei"             
                    )#end list
   tnf[[ 29]] = list( common     = "axixa"                     
                    , scientific = "Sterculia speciosa"              
                    )#end list
   tnf[[ 30]] = list( common     = "bacaba"                    
                    , scientific = "Oenocarpus"                      
                    )#end list
   tnf[[ 31]] = list( common     = "bacuri da mata"            
                    , scientific = "Garcinia madruno"                
                    )#end list
   tnf[[ 32]] = list( common     = "breu"                      
                    , scientific = "Protium apiculatum"              
                    )#end list
   tnf[[ 33]] = list( common     = "breu folha grande"         
                    , scientific = "Protium"                         
                    )#end list
   tnf[[ 34]] = list( common     = "breu manga"                
                    , scientific = "Tetragastris altissima"          
                    )#end list
   tnf[[ 35]] = list( common     = "breu sucuruba"             
                    , scientific = "Trattinnickia rhoifolia"         
                    )#end list
   tnf[[ 36]] = list( common     = "breu vermelho"             
                    , scientific = "Protium tenuifolium"             
                    )#end list
   tnf[[ 37]] = list( common     = "cabeca-de-urubu"           
                    , scientific = "Duroia macrophylla"              
                    )#end list
   tnf[[ 38]] = list( common     = "cacau da mata"             
                    , scientific = "Theobroma speciosum"             
                    )#end list
   tnf[[ 39]] = list( common     = "caferana"                  
                    , scientific = "Coussarea albescens"             
                    )#end list
   tnf[[ 40]] = list( common     = "caju da mata"              
                    , scientific = "Anacardium"                      
                    )#end list
   tnf[[ 41]] = list( common     = "canela"                    
                    , scientific = "Ocotea acutangula"               
                    )#end list
   tnf[[ 42]] = list( common     = "canela-de-jacamim"         
                    , scientific = "Rinorea flavescens"              
                    )#end list
   tnf[[ 43]] = list( common     = "canela-de-velho"           
                    , scientific = "Rinorea macrocarpa"              
                    )#end list
   tnf[[ 44]] = list( common     = "caneleira"                 
                    , scientific = "Casearia javitensis"             
                    )#end list
   tnf[[ 45]] = list( common     = "caneleira folha peluda"    
                    , scientific = "Casearia commersoniana"          
                    )#end list
   tnf[[ 46]] = list( common     = "caneleira vermelha"        
                    , scientific = "Matayba purgans"                 
                    )#end list
   tnf[[ 47]] = list( common     = "capitiu"                   
                    , scientific = "Siparuna cristata"               
                    )#end list
   tnf[[ 48]] = list( common     = "caqui"                     
                    , scientific = "Diospyros vestita"               
                    )#end list
   tnf[[ 49]] = list( common     = "carapanauba"               
                    , scientific = "Aspidosperma oblongum"           
                    )#end list
   tnf[[ 50]] = list( common     = "carapanauba amarela"       
                    , scientific = "Aspidosperma auriculatum"        
                    )#end list
   tnf[[ 51]] = list( common     = "castanha-do-para"          
                    , scientific = "Bertholletia excelsa"            
                    )#end list
   tnf[[ 52]] = list( common     = "castanha-sapucaia"         
                    , scientific = "Lecythis pisonis"                
                    )#end list
   tnf[[ 53]] = list( common     = "cedro"                     
                    , scientific = "Cedrela odorata"                 
                    )#end list
   tnf[[ 54]] = list( common     = "chichua"                   
                    , scientific = "Maytenus pruinosa"               
                    )#end list
   tnf[[ 55]] = list( common     = "cipo"                      
                    , scientific = "Liana"                           
                    )#end list
   tnf[[ 56]] = list( common     = "cocao"                     
                    , scientific = "Poecilanthe effusa"              
                    )#end list
   tnf[[ 57]] = list( common     = "copaiba"                   
                    , scientific = "Copaifera reticulata"            
                    )#end list
   tnf[[ 58]] = list( common     = "coracao-de-negro"          
                    , scientific = "Chamaecrista xinguensis"         
                    )#end list
   tnf[[ 59]] = list( common     = "cuiarana"                  
                    , scientific = "Buchenavia grandis"              
                    )#end list
   tnf[[ 60]] = list( common     = "cumaru"                    
                    , scientific = "Dipteryx odorata"                
                    )#end list
   tnf[[ 61]] = list( common     = "cumarui"                   
                    , scientific = "Prunus myrtifolia"               
                    )#end list
   tnf[[ 62]] = list( common     = "cumate preto"              
                    , scientific = "Calyptranthes lucida"            
                    )#end list
   tnf[[ 63]] = list( common     = "cunario"                   
                    , scientific = "Connarus perrottetii"            
                    )#end list
   tnf[[ 64]] = list( common     = "embauba"                   
                    , scientific = "Cecropia"                        
                    )#end list
   tnf[[ 65]] = list( common     = "embauba branca"            
                    , scientific = "Cecropia distachya"              
                    )#end list
   tnf[[ 66]] = list( common     = "embauba vermelha"          
                    , scientific = "Cecropia sciadophylla"           
                    )#end list
   tnf[[ 67]] = list( common     = "embaubarana"               
                    , scientific = "Pourouma guianensis"             
                    )#end list
   tnf[[ 68]] = list( common     = "envira"                    
                    , scientific = "Xylopia"                         
                    )#end list
   tnf[[ 69]] = list( common     = "envira branca"             
                    , scientific = "Guatteria amazonica"             
                    )#end list
   tnf[[ 70]] = list( common     = "envira-cana"               
                    , scientific = "Xylopia nitida"                  
                    )#end list
   tnf[[ 71]] = list( common     = "envira preta"              
                    , scientific = "Guatteria poeppigiana"           
                    )#end list
   tnf[[ 72]] = list( common     = "envira-surucucu"           
                    , scientific = "Duguetia echinophora"            
                    )#end list
   tnf[[ 73]] = list( common     = "envira vermelha"           
                    , scientific = "Xylopia ochrantha"               
                    )#end list
   tnf[[ 74]] = list( common     = "escorrega-macaco"          
                    , scientific = "Capirona decorticans"            
                    )#end list
   tnf[[ 75]] = list( common     = "farinha seca"              
                    , scientific = "Ampelocera edentula"             
                    )#end list
   tnf[[ 76]] = list( common     = "fava"                      
                    , scientific = "Abarema jupunba"                 
                    )#end list
   tnf[[ 77]] = list( common     = "fava amargosa"             
                    , scientific = "Vataireopsis speciosa"           
                    )#end list
   tnf[[ 78]] = list( common     = "fava-bolota"               
                    , scientific = "Parkia pendula"                  
                    )#end list
   tnf[[ 79]] = list( common     = "fava da rosca"             
                    , scientific = "Enterolobium schomburgkii"       
                    )#end list
   tnf[[ 80]] = list( common     = "fava folha fina"           
                    , scientific = "Pseudopiptadenia psilostachy"    
                    )#end list
   tnf[[ 81]] = list( common     = "fava-mapuxiqui"            
                    , scientific = "Albizia pedicellaris"            
                    )#end list
   tnf[[ 82]] = list( common     = "fava-saboeiro"             
                    , scientific = "Abarema"                         
                    )#end list
   tnf[[ 83]] = list( common     = "fava-timbauba"             
                    , scientific = "Enterolobium maximum"            
                    )#end list
   tnf[[ 84]] = list( common     = "fava-arara-tucupi"         
                    , scientific = "Parkia multijuga"                
                    )#end list
   tnf[[ 85]] = list( common     = "fava-barbatimao"           
                    , scientific = "Stryphnodendron pulcherrimum"    
                    )#end list
   tnf[[ 86]] = list( common     = "fava-saboeiro"             
                    , scientific = "Abarema"                         
                    )#end list
   tnf[[ 87]] = list( common     = "freijo"                    
                    , scientific = "Cordia exaltata"                 
                    )#end list
   tnf[[ 88]] = list( common     = "freijo branco"             
                    , scientific = "Cordia bicolor"                  
                    )#end list
   tnf[[ 89]] = list( common     = "freijorana"                
                    , scientific = "Cordia"                          
                    )#end list
   tnf[[ 90]] = list( common     = "geniparana"                
                    , scientific = "Gustavia poeppigiana"            
                    )#end list
   tnf[[ 91]] = list( common     = "ginja"                     
                    , scientific = "Eugenia omissa"                  
                    )#end list
   tnf[[ 92]] = list( common     = "goiabarana"                
                    , scientific = "Eugenia omissa"                  
                    )#end list
   tnf[[ 93]] = list( common     = "goiabinha"                 
                    , scientific = "Myrciaria tenella"               
                    )#end list
   tnf[[ 94]] = list( common     = "gombeira"                  
                    , scientific = "Swartzia laurifolia"             
                    )#end list
   tnf[[ 95]] = list( common     = "gombeira folha peluda"     
                    , scientific = "Swartzia laxiflora"              
                    )#end list
   tnf[[ 96]] = list( common     = "gombeira vermelha"         
                    , scientific = "Swartzia laurifolia"             
                    )#end list
   tnf[[ 97]] = list( common     = "guariuba"                  
                    , scientific = "Clarisia racemosa"               
                    )#end list
   tnf[[ 98]] = list( common     = "inajarana"                 
                    , scientific = "Quararibea guianensis"           
                    )#end list
   tnf[[ 99]] = list( common     = "inga"                      
                    , scientific = "Inga macrophylla"                
                    )#end list
   tnf[[100]] = list( common     = "inga branco"               
                    , scientific = "Inga alba"                       
                    )#end list
   tnf[[101]] = list( common     = "inga vermelho"             
                    , scientific = "Inga alba"                       
                    )#end list
   tnf[[102]] = list( common     = "inga xixica"               
                    , scientific = "Inga"                            
                    )#end list
   tnf[[103]] = list( common     = "itauba amarela"            
                    , scientific = "Mezilaurus itauba"               
                    )#end list
   tnf[[104]] = list( common     = "itaubarana"                
                    , scientific = "Casearia"                        
                    )#end list
   tnf[[105]] = list( common     = "amapa amargoso"                    
                    , scientific = "Brosimum guianense"              
                    )#end list
   tnf[[106]] = list( common     = "jarana"                    
                    , scientific = "Lecythis lurida"                 
                    )#end list
   tnf[[107]] = list( common     = "jatauba"                   
                    , scientific = "Matayba purgans"                 
                    )#end list
   tnf[[108]] = list( common     = "joao-mole"                 
                    , scientific = "Guapira venosa"                  
                    )#end list
   tnf[[109]] = list( common     = "joao-mole grande"          
                    , scientific = "Neea"                            
                    )#end list
   tnf[[110]] = list( common     = "jutai-pororoca"            
                    , scientific = "Dialium guianense"               
                    )#end list
   tnf[[111]] = list( common     = "jutai-acu"                 
                    , scientific = "Hymenaea courbaril"              
                    )#end list
   tnf[[112]] = list( common     = "jutai-mirim"               
                    , scientific = "Hymenaea parvifolia"             
                    )#end list
   tnf[[113]] = list( common     = "jutaiarana"                
                    , scientific = "Swartzia arborescens"            
                    )#end list
   tnf[[114]] = list( common     = "lacre-da-mata"             
                    , scientific = "Vismia"                          
                    )#end list
   tnf[[115]] = list( common     = "lacre vermelho"            
                    , scientific = "Vismia latifolia"                
                    )#end list
   tnf[[116]] = list( common     = "louro"                     
                    , scientific = "Nectandra pulverulenta"          
                    )#end list
   tnf[[117]] = list( common     = "louro-abacate"             
                    , scientific = "Ocotea glomerata"                
                    )#end list
   tnf[[118]] = list( common     = "louro amarelo"             
                    , scientific = "Licaria brasiliensis"            
                    )#end list
   tnf[[119]] = list( common     = "louro mole"                
                    , scientific = "Nectandra pulverulenta"          
                    )#end list
   tnf[[120]] = list( common     = "louro preto"               
                    , scientific = "Nectandra reticulata"            
                    )#end list
   tnf[[121]] = list( common     = "louro vermelho"            
                    , scientific = "Ocotea cuprea"                   
                    )#end list
   tnf[[122]] = list( common     = "macacauba"                 
                    , scientific = "Platymiscium trinitatis"         
                    )#end list
   tnf[[123]] = list( common     = "macaranduba"               
                    , scientific = "Manilkara huberi"                
                    )#end list
   tnf[[124]] = list( common     = "macucu"                    
                    , scientific = "Licania heteromorpha"            
                    )#end list
   tnf[[125]] = list( common     = "mamorana"                  
                    , scientific = "Eriotheca globosa"               
                    )#end list
   tnf[[126]] = list( common     = "mandioqueira ariana"       
                    , scientific = "Qualea grandiflora"              
                    )#end list
   tnf[[127]] = list( common     = "mandioqueira rosa"         
                    , scientific = "Qualea dinizii"                  
                    )#end list
   tnf[[128]] = list( common     = "maparana"                  
                    , scientific = "Drypetes variabilis"             
                    )#end list
   tnf[[129]] = list( common     = "marupa"                    
                    , scientific = "Simarouba amara"                 
                    )#end list
   tnf[[130]] = list( common     = "mata-calado"               
                    , scientific = "Lacistema aggregatum"            
                    )#end list
   tnf[[131]] = list( common     = "matamata"                  
                    , scientific = "Lecythis holcogyne"              
                    )#end list
   tnf[[132]] = list( common     = "matamata branco"           
                    , scientific = "Eschweilera pedicellata"         
                    )#end list
   tnf[[133]] = list( common     = "matamata jarani"           
                    , scientific = "Lecythis holcogyne"              
                    )#end list
   tnf[[134]] = list( common     = "matamata preto"            
                    , scientific = "Eschweilera coriacea"            
                    )#end list
   tnf[[135]] = list( common     = "matamata vermelho"         
                    , scientific = "Eschweilera bracteosa"           
                    )#end list
   tnf[[136]] = list( common     = "melancieira"               
                    , scientific = "Alexa grandiflora"               
                    )#end list
   tnf[[137]] = list( common     = "mirindiba doce"            
                    , scientific = "Glycydendron amazonicum"         
                    )#end list
   tnf[[138]] = list( common     = "morototo"                  
                    , scientific = "Schefflera morototoni"           
                    )#end list
   tnf[[139]] = list( common     = "muiauba"                   
                    , scientific = "Mouriri nigra"                   
                    )#end list
   tnf[[140]] = list( common     = "muiracatiara"              
                    , scientific = "Astronium lecointei"             
                    )#end list
   tnf[[141]] = list( common     = "muirapinima"               
                    , scientific = "Maquira calophylla"              
                    )#end list
   tnf[[142]] = list( common     = "muirarema"                 
                    , scientific = "Trichilia micrantha"             
                    )#end list
   tnf[[143]] = list( common     = "muiratinga"                
                    , scientific = "Maquira guianensis"              
                    )#end list
   tnf[[144]] = list( common     = "muiratinga folha larga"    
                    , scientific = "Maquira sclerophylla"            
                    )#end list
   tnf[[145]] = list( common     = "muiratinga folha lisa"     
                    , scientific = "Maquira sclerophylla"            
                    )#end list
   tnf[[146]] = list( common     = "muiratinga folha longa"    
                    , scientific = "Maquira sclerophylla"            
                    )#end list
   tnf[[147]] = list( common     = "muiratinga folha peluda"   
                    , scientific = "Perebea mollis"                  
                    )#end list
   tnf[[148]] = list( common     = "muirauba"                  
                    , scientific = "Mouriri brachyanthera"           
                    )#end list
   tnf[[149]] = list( common     = "murta"                     
                    , scientific = "Myrcia fallax"                   
                    )#end list
   tnf[[150]] = list( common     = "muruci-da-mata"            
                    , scientific = "Byrsonima arthropoda"            
                    )#end list
   tnf[[151]] = list( common     = "murure"                    
                    , scientific = "Brosimum acutifolium"            
                    )#end list
   tnf[[152]] = list( common     = "mututi"                    
                    , scientific = "Pterocarpus rohrii"              
                    )#end list
   tnf[[153]] = list( common     = "muuba"                     
                    , scientific = "Bellucia grossularioides"        
                    )#end list
   tnf[[154]] = list( common     = "pama"                      
                    , scientific = "Pseudolmedia macrophylla"        
                    )#end list
   tnf[[155]] = list( common     = "papa-terra"                 
                    , scientific = "Miconia ruficalyx"               
                    )#end list
   tnf[[156]] = list( common     = "papa-terra amarelo"         
                    , scientific = "Miconia lepidota"                
                    )#end list
   tnf[[157]] = list( common     = "papa-terra folha peluda"    
                    , scientific = "Miconia phanerostila"            
                    )#end list
   tnf[[158]] = list( common     = "parapara"                  
                    , scientific = "Jacaranda copaia"                
                    )#end list
   tnf[[159]] = list( common     = "passarinheira"             
                    , scientific = "Casearia ulmifolia"              
                    )#end list
   tnf[[160]] = list( common     = "pata-de-vaca"              
                    , scientific = "Bauhinia"                        
                    )#end list
   tnf[[161]] = list( common     = "papo-de-mutum"             
                    , scientific = "Lacunaria crenata"               
                    )#end list
   tnf[[162]] = list( common     = "pau-cobra"                 
                    , scientific = "Salacia impressifolia"           
                    )#end list
   tnf[[163]] = list( common     = "pau-de-arco amarelo"       
                    , scientific = "Handroanthus serratifolius"           
                    )#end list
   tnf[[164]] = list( common     = "pau-de-colher"             
                    , scientific = "Lacmellea aculeata"              
                    )#end list
   tnf[[165]] = list( common     = "pau-de-remo"               
                    , scientific = "Chimarrhis turbinata"            
                    )#end list
   tnf[[166]] = list( common     = "pau-jacare"                
                    , scientific = "Laetia procera"                  
                    )#end list
   tnf[[167]] = list( common     = "pau-para-tudo"             
                    , scientific = "Swartzia recurva"                
                    )#end list
   tnf[[168]] = list( common     = "pente-de-macaco"           
                    , scientific = "Apeiba glabra"                   
                    )#end list
   tnf[[169]] = list( common     = "molongo"            
                    , scientific = "Ambelania acida"                 
                    )#end list
   tnf[[170]] = list( common     = "piquia"                    
                    , scientific = "Caryocar villosum"               
                    )#end list
   tnf[[171]] = list( common     = "pitomba"                   
                    , scientific = "Talisia retusa"                  
                    )#end list
   tnf[[172]] = list( common     = "quariquarana"              
                    , scientific = "Rinorea"                         
                    )#end list
   tnf[[173]] = list( common     = "quaruba"                   
                    , scientific = "Vochysia"                        
                    )#end list
   tnf[[174]] = list( common     = "quaruba rosa"              
                    , scientific = "Vochysia surinamensis"           
                    )#end list
   tnf[[175]] = list( common     = "quaruba verdadeira"        
                    , scientific = "Vochysia maxima"                 
                    )#end list
   tnf[[176]] = list( common     = "quarubarana"               
                    , scientific = "Erisma uncinatum"                
                    )#end list
   tnf[[177]] = list( common     = "quinarana"                 
                    , scientific = "Geissospermum laeve"             
                    )#end list
   tnf[[178]] = list( common     = "saboeira"                  
                    , scientific = "Abarema jupunba"                 
                    )#end list
   tnf[[179]] = list( common     = "sucupira amarela"          
                    , scientific = "Bowdichia nitida"                
                    )#end list
   tnf[[180]] = list( common     = "sucupira preta"            
                    , scientific = "Diplotropis triloba"             
                    )#end list
   tnf[[181]] = list( common     = "tachi"                     
                    , scientific = "Tachigali"                       
                    )#end list
   tnf[[182]] = list( common     = "tachi branco"              
                    , scientific = "Tachigali alba"                  
                    )#end list
   tnf[[183]] = list( common     = "tachi preto"               
                    , scientific = "Tachigali myrmecophila"          
                    )#end list
   tnf[[184]] = list( common     = "tachi preto folha grauda"  
                    , scientific = "Tachigali myrmecophila"          
                    )#end list
   tnf[[185]] = list( common     = "tachi preto folha miuda"   
                    , scientific = "Tachigali paniculata"            
                    )#end list
   tnf[[186]] = list( common     = "tachi vermelho"            
                    , scientific = "Tachigali chrysophylla"          
                    )#end list
   tnf[[187]] = list( common     = "taperebarana"              
                    , scientific = "Heisteria laxiflora"             
                    )#end list
   tnf[[188]] = list( common     = "taruma"                    
                    , scientific = "Vitex triflora"                  
                    )#end list
   tnf[[189]] = list( common     = "tatajuba"                  
                    , scientific = "Bagassa guianensis"              
                    )#end list
   tnf[[190]] = list( common     = "tatapiririca"              
                    , scientific = "Tapirira guianensis"             
                    )#end list
   tnf[[191]] = list( common     = "tatapiririca folha peluda" 
                    , scientific = "Tapirira obtusa"                 
                    )#end list
   tnf[[192]] = list( common     = "tatapiririca vermelha"     
                    , scientific = "Tapirira guianensis"             
                    )#end list
   tnf[[193]] = list( common     = "tauari"                    
                    , scientific = "Couratari stellata"              
                    )#end list
   tnf[[194]] = list( common     = "tento"                     
                    , scientific = "Simaba polyphylla"               
                    )#end list
   tnf[[195]] = list( common     = "tento folha grauda"        
                    , scientific = "Ormosia paraensis"               
                    )#end list
   tnf[[196]] = list( common     = "tento folha miuda"         
                    , scientific = "Abarema mataybifolia"            
                    )#end list
   tnf[[197]] = list( common     = "tento preto"               
                    , scientific = "Abarema mataybifolia"            
                    )#end list
   tnf[[198]] = list( common     = "tres folhas"               
                    , scientific = "Allophylus punctatus"            
                    )#end list
   tnf[[199]] = list( common     = "ucuuba"                    
                    , scientific = "Virola"                          
                    )#end list
   tnf[[200]] = list( common     = "ucuuba folha peluda"       
                    , scientific = "Virola crebrinervia"             
                    )#end list
   tnf[[201]] = list( common     = "ucuuba vermelha"           
                    , scientific = "Virola elongata"                 
                    )#end list
   tnf[[202]] = list( common     = "ucuuba terra-firme"        
                    , scientific = "Virola michelii"                 
                    )#end list
   tnf[[203]] = list( common     = "ucuubarana"                
                    , scientific = "Iryanthera sagotiana"            
                    )#end list
   tnf[[204]] = list( common     = "uruazeiro"                 
                    , scientific = "Cordia exaltata"                 
                    )#end list
   tnf[[205]] = list( common     = "urucurana"                 
                    , scientific = "Aparisthmium cordatum"           
                    )#end list
   tnf[[206]] = list( common     = "uxi"                       
                    , scientific = "Endopleura"                      
                    )#end list
   tnf[[207]] = list( common     = "uxi liso"                  
                    , scientific = "Endopleura uchi"                 
                    )#end list
   tnf[[208]] = list( common     = "verdinho"                  
                    , scientific = "Ilex petiolaris"                 
                    )#end list
   tnf[[209]] = list( common     = "cipo"                  
                    , scientific = "Liana"                 
                    )#end list
   #---------------------------------------------------------------------------------------#



   #----- Convert the TNF list into a data frame. -----------------------------------------#
   tnf = data.frame( apply( X      = t(sapply(X = tnf , FUN = c))
                          , MARGIN = c(1,2)
                          , FUN    = unlist
                          )#end apply
                   , stringsAsFactors = FALSE
                   )#end data.frame
   #---------------------------------------------------------------------------------------#



   #---------------------------------------------------------------------------------------#
   #     Create an output data frame with the scientific names.  The default "no-name"     #
   # data does not count as gap-filling.                                                   #
   #---------------------------------------------------------------------------------------#
   out            = data.frame( common           = rep("mato"      ,times=n.datum)
                              , scientific       = rep("Ignotum"   ,times=n.datum)
                              , stringsAsFactors = FALSE
                              )#end data.frame
   idx            = match(datum$common,tnf$common)
   ok             = ! is.na(idx)
   out[ok,]       = tnf[idx[ok],]
   out$gfflg      = as.numeric(! out$common %in% c("cipo","mato"))
   #---------------------------------------------------------------------------------------#
   

   #---------------------------------------------------------------------------------------#
   #      Copy data to the main data frame.                                                #
   #---------------------------------------------------------------------------------------#
   sel = is.na(datum$scientific)
   datum$common       [sel] = out$common    [sel]
   datum$scientific   [sel] = out$scientific[sel]
   datum$gf.scientific[sel] = out$gfflg     [sel]
   #---------------------------------------------------------------------------------------#


   #---------------------------------------------------------------------------------------#
   #     Put NA to species if only genus is known.                                         #
   #---------------------------------------------------------------------------------------#
   gs.list          = sapply(X = tolower(datum$scientific),FUN=strsplit,split=" ")
   gs.length        = sapply(X = gs.list, FUN = length)
   gs.mat           = cbind( mapply(FUN="[",gs.list,MoreArgs=list(1))
                           , mapply(FUN="[",gs.list,MoreArgs=list(2))
                           )#end cbind
   datum$genus      = capwords(gs.mat[,1],strict=TRUE)
   datum$scientific = paste(datum$genus,tolower (gs.mat[,2]),sep=" ")
   #---------------------------------------------------------------------------------------#
   

   #---------------------------------------------------------------------------------------#
   #      Fill in the family.                                                              #
   #---------------------------------------------------------------------------------------#
   datum = standard.family.name(datum)
   #---------------------------------------------------------------------------------------#

   return(datum)
}#end if
#==========================================================================================#
#==========================================================================================#






#==========================================================================================#
#==========================================================================================#
#     Fill in the wood density for all individuals.  We do this in three stages, and       #
# save how the wood density was determined.  The numbers represent the flag given for      #
# each wood density.                                                                       #
#  0 -- Individuals have full identification and the species is listed in the              #
#       database; we used the reported density for that species.                           #
#  1 -- The species/genus is identified but it isn't listed in the database, we use an     #
#       average of all other species of that genus that exist in database.                 #
#  2 -- We could not identify the individual to the genus level, but we know the           #
#       family.  We use the average wood density of all individuals of this census that    #
#       belong to that family.                                                             #
#  3 -- No taxonomic information could be retrieved for this individual, so we filled      #
#       with random sampling.                                                              #
#                                                                                          #
#  We also add 10 when the scientific name was gap filled.                                 #
#                                                                                          #
#  INPUT variables:                                                                        #
#                                                                                          #
#  - datum       -- data frame with data.  This is going to be the output as well          #
#  - wood        -- wood density data base.                                                #
#  - region      -- which regions to use for genus average when species is not known or    #
#                   not available in the data set.                                         #
#  - fill.sample -- use random sampling to fill unidentified individuals, or individuals   #
#                   with genus that is not available at the wood density data base?        #
#                   If FALSE then it uses averages                                         #
#  - weight      -- A weighting factor to give either probability or to weight             #
#                   the average.  This could be a vector with weights, or a character with #
#                   the name of the variable in datum to use as the weight, or an integer  #
#                   with the column to be used as the weighting factor.                    #
#  - verbose     -- Flag to control the amount of information                              #
#------------------------------------------------------------------------------------------#
find.wood.density <<- function( datum
                              , wood
                              , region      = NULL
                              , fill.sample = TRUE
                              , weight      = NULL
                              , verbose     = FALSE
                              ){
   #---------------------------------------------------------------------------------------#
   #     Initialise gap filling flag in case it's not there.                               #
   #---------------------------------------------------------------------------------------#
   if (! "gf.wood.dens" %in% names(datum)){
      datum$gf.wood.dens = rep(NA,times=nrow(datum))
   }#end (! "gf.wood.dens" %in% names(datum))
   #---------------------------------------------------------------------------------------#


   #---------------------------------------------------------------------------------------#
   #     Check whether weight is a vector, or a character.  Make them a vector here.       #
   #---------------------------------------------------------------------------------------#
   if (is.null(weight)){
      #----- No weight provided, use equal weights. ---------------------------------------#
      wgtfac = rep(x=1/nrow(datum),times=nrow(datum))
      #------------------------------------------------------------------------------------#
   }else if (is.character(weight) && (length(weight) == 1)){
      #----- Character with column name was provided. -------------------------------------#
      if (weight %in% names(datum)){
         wgtfac = ifelse(datum[[weight]] %>% 0, datum[[weight]], 0)
      }else{
         stop(paste0(" Weight Variable name (",weight,") not found in datum!"))
      }#end if
      #------------------------------------------------------------------------------------#
   }else if (is.numeric(weight) && (length(weight) == 1)){
      #----- Column index provided. -------------------------------------------------------#
      if (! (weight %wr% c(1,ncol(datum)))){
         stop(paste0(" Weight column index (",weight,") doesn't make sense"))
      }else if (is.numeric(datum[,weight])){
         wgtfac = ifelse(datum[,weight] %>% 0, datum[,weight], 0)
      }else{
         stop(paste0(" Column ",weight," of data frame is not numeric!"))
      }#end if
      #------------------------------------------------------------------------------------#
   }else if (is.numeric(weight) && (length(weight) == nrow(datum))){
      wgtfac = ifelse(weight %>% 0, weight, 0)
   }else{
      stop("Variable weight is not properly set!")
   }#end if (is.null(weight))
   #---------------------------------------------------------------------------------------#



   #---------------------------------------------------------------------------------------#
   #     Check that the weighting factor makes sense.                                      #
   #---------------------------------------------------------------------------------------#
   if (sum(wgtfac) > 0){
      wgtfac = wgtfac / sum(wgtfac)
   }else{
      stop(" Invalid weighting variable. Most numbers should be positive...")
   }#end if
   #---------------------------------------------------------------------------------------#



   #---------------------------------------------------------------------------------------#
   #      Find out which region to use.                                                    #
   #---------------------------------------------------------------------------------------#
   if (! "region" %in% names(wood)){
      stop(" You must be using an old wood density file.  You need region information")
   }else{
      all.regions = sort(unique(wood$region))
      if (is.null(region)){
         #----- No region has been given, use all regions. --------------------------------#
         region = all.regions
         #---------------------------------------------------------------------------------#
      }else{
         #----- Make sure all regions are valid. ------------------------------------------#
         if (! all(region %in% all.regions)){
            cat0("--------------------------------------------------------")
            cat0(" - Your region: ",region)
            cat0(" - Acceptable regions: ",paste(all.regions,collapse="; "))
            cat0("--------------------------------------------------------")
            stop(" Please only include regions listed in the data base.")
         }#end if
         #---------------------------------------------------------------------------------#
      }#end if
      #------------------------------------------------------------------------------------#
   }#end if
   #---------------------------------------------------------------------------------------#


   #---------------------------------------------------------------------------------------#
   #     First loop, fill in information to all individuals for which the genus is         #
   # known.                                                                                #
   #---------------------------------------------------------------------------------------#
   #----- Separate all species. -----------------------------------------------------------#
   species          = unique(datum$scientific)
   nspecies         = length(species)
   
   sci.genus.mean   = matrix(nrow=0,ncol=3
                            ,dimnames=list(NULL,c("scientific","genus","family")))
   sci.loose.mean   = matrix(nrow=0,ncol=3
                            ,dimnames=list(NULL,c("scientific","genus","family")))
   for (s in sequence(nspecies)){
      if (! is.na(species[s]) && length(grep("Ignotum",species[s])) == 0){
         if (verbose) cat("   - ",s,"/",nspecies,"  -  ",species[s],"...","\n") 

         #----- Get the genus and family of this species, in case we need it. -------------#
         igen        = which (datum$scientific %in% species[s])
         this.genus  = unique(datum$genus[igen])
         this.family = unique(capwords(datum$family[igen],strict=TRUE))
         if (length(this.genus) != 1 || length(this.family) != 1){
            cat(" - Perhaps a bastard genus?","\n")
            browser()
         }#end if
         #---------------------------------------------------------------------------------#



         #---------------------------------------------------------------------------------#
         #     Check whether we have biomass for this species.                             #
         #---------------------------------------------------------------------------------#
         if (species[s] %in% wood$scientific){
            #------------------------------------------------------------------------------#
            #     Find the index of this species in the database, and assign the wood      #
            # density from there.                                                          #
            #------------------------------------------------------------------------------#
            iwood = intersect( which(wood$scientific %in% species[s] )
                             , intersect( which( wood$genus  %in% this.genus )
                                        , which( wood$family %in% this.family) ) )
            if (length(iwood) != 1){
               #----- Intersection was zero! Misidentification, maybe? --------------------#
               loose      = TRUE
               cat ("Weird, length(iwood)=",length(iwood),"...","\n",sep="")
               browser()
               #---------------------------------------------------------------------------#
            }else{
               if (any(c(FALSE,is.finite(wood$density[iwood])),na.rm=TRUE)){
                  sel       = datum$scientific %in% species[s]
                  datum$wood.dens   [sel] = wood$density[iwood]
                  datum$gf.wood.dens[sel] = 0
                  fill.genus              = FALSE
                  loose                   = FALSE
               }else{
                  loose                   = TRUE
                  fill.genus              = this.genus %in% wood$genus
               }#end if
               #---------------------------------------------------------------------------#
            }#end if
            #------------------------------------------------------------------------------#
         }else{
            loose      = TRUE
            fill.genus = this.genus %in% wood$genus
         }#end if
         #---------------------------------------------------------------------------------#



         #---------------------------------------------------------------------------------#
         #     If this species is to be filled with genus average.                         #
         #---------------------------------------------------------------------------------#
         if (fill.genus){
            #------------------------------------------------------------------------------#
            #     Find all the plants from this genus, take the average, and attribute     #
            # to this species.  In this case, warn the user about the species, it may      #
            # be a typo in the scientific name that is easy to fix.                        #
            #------------------------------------------------------------------------------#
            iwood  = intersect( which( wood$genus  %in% this.genus )
                              , intersect( which( wood$family %in% this.family)
                                         , which( wood$region %in% region     )
                                         )#end intersect
                              )#end intersect
            if (length(iwood) == 0){
               #----- Intersection was zero! Misidentification, maybe? --------------------#
               loose      = TRUE
            }else{
               if (any(is.finite(wood$density[iwood]))){
                  sel                     = datum$scientific   %in% species[s]
                  overwrite               = sel & ! is.na(datum$wood.dens)
                  if (any(overwrite)) browser()
 
                  datum$wood.dens   [sel] = mean(wood$density[iwood],na.rm=TRUE)
                  datum$gf.wood.dens[sel] = 1
                  sci.genus.mean          = rbind(sci.genus.mean
                                                 ,c(species[s],this.genus,this.family))
                  if (verbose){
                     cat("     * Species",species[s]
                        ,"not found. Use genus average instead...","\n")
                  }#end if
                  loose = FALSE
               }else{
                  #---- The plant probably doesn't have any family. -----------------------#
                  loose = TRUE
               }#end if
               #---------------------------------------------------------------------------#
            }#end if
            #------------------------------------------------------------------------------#
         }#end if
         #---------------------------------------------------------------------------------#


         #---------------------------------------------------------------------------------#
         #    Append plants that have no family together.                                  #
         #---------------------------------------------------------------------------------#
         if (loose){
            #---- The plant probably doesn't have any family. -----------------------------#
            sci.loose.mean = rbind(sci.loose.mean
                                  ,c(species[s],this.genus,this.family))
            #------------------------------------------------------------------------------#
         }#end if
         #---------------------------------------------------------------------------------#
      }#end if
      #------------------------------------------------------------------------------------#
   }#end for
   #---------------------------------------------------------------------------------------#



   #---------------------------------------------------------------------------------------#
   #     List all genera that were not filled with species information.                    #
   #---------------------------------------------------------------------------------------#
   sci.genus.mean = sci.genus.mean[order(sci.genus.mean[,"scientific"]),]
   genus.only     = grepl(pattern=" NA$",x=sci.genus.mean[,"scientific"],ignore.case=TRUE)
   if (verbose && (nrow(sci.genus.mean[!genus.only,,drop=FALSE]) > 0)){
      cat0("")
      cat0("-----------------------------------------------------------------------")
      cat0(" Found species that were not in Zanne's data base (check for synonyms)!")
      print(sci.genus.mean[! genus.only,,drop=FALSE],quote=FALSE)
      cat0("-----------------------------------------------------------------------")
      cat0("")
   }#end if (verbose && nrow(sci.genus.mean[!genus.only,,drop=FALSE]) > 0)
   if (verbose && (nrow(sci.genus.mean[genus.only,,drop=FALSE]) > 0)){
      cat0("")
      cat0("-----------------------------------------------------------------------")
      cat0("Only genus was provided: we used the genus mean wood density:")
      print (sci.genus.mean[genus.only,,drop=FALSE],quote=FALSE)
      cat0("-----------------------------------------------------------------------")
      cat0("")
   }#end if (verbose && nrow(sci.genus.mean[genus.only,,drop=FALSE]) > 0)
   #---------------------------------------------------------------------------------------#


   #---------------------------------------------------------------------------------------#
   #     List all genera that didn't belong to any known family.                           #
   #---------------------------------------------------------------------------------------#
   if (verbose && (nrow(sci.loose.mean) > 0)){
      cat0("")
      cat0("-----------------------------------------------------------------------")
      cat0(" Found genera that didn't have any data in Zanne's data base!")
      print(sci.loose.mean,quote=FALSE)
      cat0("-----------------------------------------------------------------------")
      cat0("")
   }#end if
   #---------------------------------------------------------------------------------------#



   #---------------------------------------------------------------------------------------#
   #     Second loop: we list all families, and look for individuals that have no genus    #
   # associated. We compute the mean wood density of the known individuals for that        #
   # family and use that as an estimate of wood density.                                   #
   #---------------------------------------------------------------------------------------#
   #----- Separate all families. ----------------------------------------------------------#
   families          = unique(datum$family)
   nfamilies         = length(families)
   sci.family.sample = matrix(nrow=0,ncol=3
                             ,dimnames=list(NULL,c("scientific","family","wood.dens")))
   #----- Loop over all families. ---------------------------------------------------------#
   for (f in sequence(nfamilies)){
      if (families[f] != "Ignotaceae"){
         if (verbose) cat("   - ",f,"/",nfamilies,"  -  ",families[f],"...","\n")

         #----- Get the individuals that belong to this family. ---------------------------#
         ifam  = which (datum$family %in% families[f] & is.finite(datum$wood.dens) )
         imiss = which (datum$family %in% families[f] & is.na    (datum$wood.dens) )
         if (length(imiss) > 0 && length(ifam) > 0){
            #----- Decide whether to use sample or average. -------------------------------#
            if (fill.sample){
               sample.wood.dens       = lit.sample( x       = datum$wood.dens[ifam]
                                                  , size    = length(imiss)
                                                  , replace = TRUE
                                                  , prob    = wgtfac[ifam]
                                                  )#end sample
            }else{
               sample.wood.dens       = weighted.mean( x     = datum$wood.dens[ifam]
                                                     , w     = wgtfac[ifam]
                                                     , na.rm = TRUE
                                                     )#end weighted.mean
            }#end if
            #------------------------------------------------------------------------------#


            #------ Fill in with the sample/mean. -----------------------------------------#
            datum$wood.dens   [imiss] = sample.wood.dens
            datum$gf.wood.dens[imiss] = 2
            gf2                       = cbind(datum$scientific[imiss]
                                             ,datum$family    [imiss]
                                             ,sprintf("%6.3f",sample.wood.dens)
                                             )#end cbind
            sci.family.sample         = rbind(sci.family.sample,gf2)
            #------------------------------------------------------------------------------#
         }#end if
         #---------------------------------------------------------------------------------#
      }#end if
      #------------------------------------------------------------------------------------#
   }#end for
   #---------------------------------------------------------------------------------------#


   #---------------------------------------------------------------------------------------#
   #     Stop if there was any genus that didn't belong to any known family.               #
   #---------------------------------------------------------------------------------------#
   if (nrow(sci.family.sample) > 0){
      if (verbose){
         cat (" Found families with unidentified genera!","\n")
         print(sci.family.sample,quote=FALSE)
      }#end if
   }#end if
   #---------------------------------------------------------------------------------------#


   #---------------------------------------------------------------------------------------#
   #    Final block.  We fill in the wood density for unknown individuals, by randomly     #
   # sampling from the individuals we know the density.                                    #
   #---------------------------------------------------------------------------------------#
   imiss                     = which(is.na(datum$wood.dens))
   nmiss                     = length(imiss)
   if (nmiss > 0){
      if (verbose){
         cat (" The following families are filled with global sampling: ","\n")
         fam.global.sampling = t(t(sort(unique(datum$family[imiss]))))
         print(fam.global.sampling)
      }#end if

      #----- Decide whether to use sample or averaged values. -----------------------------#
      if (fill.sample){
         sample.wood.dens = lit.sample( x       = datum$wood.dens[-imiss]
                                      , size    = nmiss
                                      , replace = TRUE
                                      , prob    = wgtfac[-imiss]
                                      )#end lit.sample
      }else{
         sample.wood.dens = weighted.mean( x     = datum$wood.dens[-imiss]
                                         , w     = wgtfac         [-imiss]
                                         , na.rm = TRUE
                                         )#end weighted.mean
      }#end if
      #------------------------------------------------------------------------------------#


      #----- Fill the remaining gaps. -----------------------------------------------------#
      datum$wood.dens   [imiss] = sample.wood.dens
      datum$gf.wood.dens[imiss] = 3
      #------------------------------------------------------------------------------------#
   }#end if
   #---------------------------------------------------------------------------------------#


   #---------------------------------------------------------------------------------------#
   #     Adjust the gap-filling flag for wood density by adding whether the scientific     #
   # name is gap-filled.                                                                   #
   #---------------------------------------------------------------------------------------#
   if ("gf.scientific" %in% names(datum)){
      datum$gf.wood.dens = datum$gf.wood.dens + 10 * datum$gf.scientific
   }#end if ("gf.scientific" %in% names(datum))
   #---------------------------------------------------------------------------------------#


   #---------------------------------------------------------------------------------------#
   #     Assign a plant functional type based on the wood density.                         #
   #---------------------------------------------------------------------------------------#
   pft.cut    = cut(datum$wood.dens,breaks=pft.breaks)
   pft.levels = levels(pft.cut)
   pft.idx    = match(pft.cut,pft.levels)
   datum$pft  = mypfts[pft.idx]
   #---------------------------------------------------------------------------------------#
   return(datum)
}#end function
#==========================================================================================#
#==========================================================================================#






#==========================================================================================#
#==========================================================================================#
#      This attributes scientific names based on common names for surveys in Manaus.  It   #
# is not a good idea to use this anywhere else because common names may mean completely    #
# dif
#==========================================================================================#
#==========================================================================================#
scientific.lookup.mao <<- function(datum,lookup.path){

   #----- Read in the look-up table. ------------------------------------------------------#
   lookup.file = paste(lookup.path,"manaus_taxon_lookup.csv",sep="/")
   look.up = read.csv(file=lookup.file,stringsAsFactors=FALSE)
   look.up$common     = tolower(trim(look.up$common    ))
   look.up$scientific = trim(look.up$scientific)
   look.up$family     = trim(look.up$family    )
   #---------------------------------------------------------------------------------------#



   #----- Break into genus and species. ---------------------------------------------------#
   gs.list                  = sapply(X = tolower(look.up$scientific),FUN=strsplit,split=" ")
   gs.length                = sapply(X = gs.list, FUN = length)
   gs.mat                   = cbind( mapply(FUN="[",gs.list,MoreArgs=list(1))
                                   , mapply(FUN="[",gs.list,MoreArgs=list(2))
                                   )#end cbind
   g                        = capwords(gs.mat[,1],strict=TRUE)
   s                        = tolower(gs.mat[,2])
   g.s                      = paste(g,s,sep=" ")
   g.s[is.na(g) & is.na(s)] = NA
   look.up$scientific       = g.s
   look.up$genus            = g
   #---------------------------------------------------------------------------------------#



   #----- Trim the common names, and simplify/replace some names. -------------------------#
   datum$common                      = tolower(trim(datum$common))
   datum$common[is.na(datum$common)] = "mato"
   #---------------------------------------------------------------------------------------#



   #----- Find all unique common names. ---------------------------------------------------#
   unique.common = unique(datum$common)
   n.common      = length(unique.common)
   notfound      = NULL
   for (n in 1:n.common){
      #----- Find the trees that have the same common name as this one. -------------------#
      cat (" - ",n,"/",n.common," -- ",unique.common[n],"\n")
      w.dat  = which(datum$common %in% unique.common[n])
      n.dat  = length(w.dat)
      #------------------------------------------------------------------------------------#


      #----- Find the trees in the look-up table with the same common name. ---------------#
      w.look = which(look.up$common %in% unique.common[n])
      n.look = length(w.look)
      #------------------------------------------------------------------------------------#



      #------------------------------------------------------------------------------------#
      #      Check how many trees have the same common name in the look-up table.          #
      #------------------------------------------------------------------------------------#
      if (n.look == 1){
         #----- Only one.  Use it. --------------------------------------------------------#
         datum$scientific   [w.dat] = look.up$scientific[w.look]
         datum$genus        [w.dat] = look.up$genus     [w.look]
         datum$gf.scientific[w.dat] = 1
      }else if (n.look > 1){
         datum$scientific   [w.dat] = sample( x       = look.up$scientific[w.look]
                                            , size    = n.dat
                                            , replace = TRUE
                                            )#end sample
         datum$genus        [w.dat] = look.up$genus     [w.look]
         datum$gf.scientific[w.dat] = 1
      }else{
         notfound = c(notfound,unique.common[n])
         datum$scientific   [w.dat] = "Ignotum"
         datum$genus        [w.dat] = "Ignotum"
         datum$gf.scientific[w.dat] = 0
      }#end if
      #------------------------------------------------------------------------------------#
   }#end for
   #---------------------------------------------------------------------------------------#
   return(datum)
}#end function
#==========================================================================================#
#==========================================================================================#






#==========================================================================================#
#==========================================================================================#
#      This attributes scientific names based on common names for surveys in Rebio Jaru.   #
# It is NOT a good idea to use this anywhere else because common names may mean completely #
# diferent things...                                                                       #
#==========================================================================================#
#==========================================================================================#
scientific.lookup.rja <<- function(datum,lookup.path){

   #----- Read in the look-up table. ------------------------------------------------------#
   lookup.file = paste(lookup.path,"rondonia_taxon_lookup.csv",sep="/")
   look.up = read.csv(file=lookup.file,stringsAsFactors=FALSE)
   look.up$common     = tolower(trim(look.up$common    ))
   look.up$scientific = trim(look.up$scientific)
   look.up$family     = trim(look.up$family    )
   #---------------------------------------------------------------------------------------#



   #----- Break into genus and species. ---------------------------------------------------#
   gs.list                  = sapply(X = tolower(look.up$scientific),FUN=strsplit,split=" ")
   gs.length                = sapply(X = gs.list, FUN = length)
   gs.mat                   = cbind( mapply(FUN="[",gs.list,MoreArgs=list(1))
                                   , mapply(FUN="[",gs.list,MoreArgs=list(2))
                                   )#end cbind
   g                        = capwords(gs.mat[,1],strict=TRUE)
   s                        = tolower(gs.mat[,2])
   g.s                      = paste(g,s,sep=" ")
   g.s[is.na(g) & is.na(s)] = NA
   look.up$scientific       = g.s
   look.up$genus            = g
   #---------------------------------------------------------------------------------------#



   #----- Trim the common names, and simplify/replace some names. -------------------------#
   datum$common                      = tolower(trim(datum$common))
   datum$common[is.na(datum$common)] = "mato"
   #---------------------------------------------------------------------------------------#



   #----- Find all unique common names. ---------------------------------------------------#
   unique.common = unique(datum$common)
   n.common      = length(unique.common)
   notfound      = NULL
   for (n in 1:n.common){
      #----- Find the trees that have the same common name as this one. -------------------#
      cat (" - ",n,"/",n.common," -- ",unique.common[n],"\n")
      w.dat  = which(datum$common %in% unique.common[n])
      n.dat  = length(w.dat)
      #------------------------------------------------------------------------------------#


      #----- Find the trees in the look-up table with the same common name. ---------------#
      w.look = which(look.up$common %in% unique.common[n])
      n.look = length(w.look)
      #------------------------------------------------------------------------------------#



      #------------------------------------------------------------------------------------#
      #      Check how many trees have the same common name in the look-up table.          #
      #------------------------------------------------------------------------------------#
      if (n.look == 1){
         #----- Only one.  Use it. --------------------------------------------------------#
         datum$scientific   [w.dat] = look.up$scientific[w.look]
         datum$genus        [w.dat] = look.up$genus     [w.look]
         datum$gf.scientific[w.dat] = 1
      }else if (n.look > 1){
         datum$scientific   [w.dat] = sample( x       = look.up$scientific[w.look]
                                            , size    = n.dat
                                            , replace = TRUE
                                            )#end sample
         datum$genus        [w.dat] = look.up$genus     [w.look]
         datum$gf.scientific[w.dat] = 1
      }else{
         notfound = c(notfound,unique.common[n])
         datum$scientific   [w.dat] = "Ignotum"
         datum$genus        [w.dat] = "Ignotum"
         datum$gf.scientific[w.dat] = 0
      }#end if
      #------------------------------------------------------------------------------------#
   }#end for
   #---------------------------------------------------------------------------------------#
   return(datum)
}#end function
#==========================================================================================#
#==========================================================================================#






#==========================================================================================#
#==========================================================================================#
#     This function returns two characters, the genus and the scientific name.             #
#------------------------------------------------------------------------------------------#
keep.gen.spe.only <<- function(x,out="both"){
   if (is.matrix(x) | is.array(x)){
      ans = apply(X=x,MARGIN=dim(x),FUN=keep.gen.spe.only,out=out)
   }else if (is.list(x)){
      ans = lapply(X=x,FUN=keep.gen.spe.only,out=out)
   }else if (is.data.frame(x)){
      ans = sapply(X=x,FUN=keep.gen.spe.only,out=out)
   }else if (length(x) > 1){
      ans = sapply(X=x,FUN=keep.gen.spe.only,out=out)
   }else{
      #----- Remove stuff that is not genus. ----------------------------------------------#
      x    = sub(pattern="cf\\."  ,replacement=""           ,ignore.case=TRUE,x=x)
      x    = sub(pattern="cf\\ "  ,replacement=""           ,ignore.case=TRUE,x=x)
      x    = sub(pattern="Ind\\ " ,replacement="deleteme\\ ",ignore.case=TRUE,x=x)
      #------------------------------------------------------------------------------------#

      #----- Split words. -----------------------------------------------------------------#
      ans  = unlist(strsplit(unlist(c(tolower(x))),split=" "))
      nans = length(ans)
      #------------------------------------------------------------------------------------#

      #----- Simplify option so just the first letter matters. ----------------------------#
      out1 = substring(tolower(out),1,1)
      #------------------------------------------------------------------------------------#


      #----- Decide whether to keep the genus, species, or both. --------------------------#
      gen = NA_character_
      spe = NA_character_
      if (nans > 0){
         gen = capwords(ans[1],strict=TRUE)
         if (nans > 1 && (! gen %in% "Deleteme")){
            spe = tolower(ans[2])
            if (spe %in% c("sp.","sp.1","ni","ind","deleteme")) spe = NA_character_
         }else{
            gen = NA_character_
         }#end if
      }#end if
      #------------------------------------------------------------------------------------#



      #------------------------------------------------------------------------------------#
      #     Select the proper output.                                                      #
      #------------------------------------------------------------------------------------#
      if (out1 == "g"){
         ans = gen
      }else if (out1 == "s"){
         ans = spe
      }else if (out1 == "b"){
         ans = ifelse(is.na(spe),gen,paste(gen,spe,sep=" "))
      }else{
         stop (paste(" Invalid out (",out,")",sep=""))
      }#end if
      #------------------------------------------------------------------------------------#
   }#end if
   #---------------------------------------------------------------------------------------#
   return(ans)
}#end function keep.gen.spe.only
#==========================================================================================#
#==========================================================================================#
manfredo89/ED2io documentation built on May 21, 2019, 11:24 a.m.