R/consensus_ecology.R

Defines functions consensus_ecology

## Requirement: 'tibble'

# Info: Thanks to the AphiaID, this function first check WORMS to correct names and obtain the ecological data.
# Info: Using the valid name, ecological infos are also retrieved. 
# Info: During the mixing of data, the Fishbase environment infos are favoured (more accurate).
# Info: On the contrary, the latitudinal infos retrieved from 4 different databases are favoured because more accurate.

consensus_ecology = function(data_multi, new_species){
  
  ENVIRONMENT = list()
  CLIMATE = list()
  
  worms_infos = worms_ecology(data_multi)
  
  fishbase_infos = fishbase_ecology(worms_infos$SPECIES)
  
  consensus_infos = merge(worms_infos, fishbase_infos, by = "SPECIES")
  
  consensus_infos = tibble::tibble(consensus_infos[!duplicated(consensus_infos$SPECIES), ])
  
  
  for(i in 1:nrow(consensus_infos)){
    
    {if(!is.na(consensus_infos$ENVIRONMENT.x[i]) && !is.na(consensus_infos$ENVIRONMENT.y[i])) ENVIRONMENT[i] = consensus_infos$ENVIRONMENT.y[i]
    
    else if(is.na(consensus_infos$ENVIRONMENT.x[i]) && !is.na(consensus_infos$ENVIRONMENT.y[i])) ENVIRONMENT[i] = consensus_infos$ENVIRONMENT.y[i]
    
    else if(!is.na(consensus_infos$ENVIRONMENT.x[i]) && is.na(consensus_infos$ENVIRONMENT.y[i])) ENVIRONMENT[i] = consensus_infos$ENVIRONMENT.x[i]
    
    else if(is.na(consensus_infos$ENVIRONMENT.x[i]) && is.na(consensus_infos$ENVIRONMENT.y[i])) ENVIRONMENT[i] = NA
    
    else stop("Unpredicted case")}
    
    {if(!is.na(consensus_infos$CLIMATE.x[i]) && !is.na(consensus_infos$CLIMATE.y[i])) CLIMATE[i] = consensus_infos$CLIMATE.y[i]
      
      else if(is.na(consensus_infos$CLIMATE.x[i]) && !is.na(consensus_infos$CLIMATE.y[i])) CLIMATE[i] = consensus_infos$CLIMATE.y[i]
      
      else if(!is.na(consensus_infos$CLIMATE.x[i]) && is.na(consensus_infos$CLIMATE.y[i])) CLIMATE[i] = consensus_infos$CLIMATE.x[i]
      
      else if(is.na(consensus_infos$CLIMATE.x[i]) && is.na(consensus_infos$CLIMATE.y[i])) CLIMATE[i] = NA
      
      else stop("Unpredicted case")}
    
  }
  
  tibble::tibble(cbind(consensus_infos[1:2], consensus_infos[6], consensus_infos[5], ENVIRONMENT = unlist(ENVIRONMENT), CLIMATE = unlist(CLIMATE)))
  
}
Eliot-RUIZ/eDNAevaluation documentation built on Dec. 17, 2021, 6:25 p.m.