imputation_trait(GROUPData, selectedTraits, shortnames)

Wrapper around missForest to impute missing trait values for a taxonomic group.

machine learningutility
Args:GROUPData — trait data frame with NAsselectedTraits — columns to imputeshortnames — abbreviated group labels
imputation_trait <- function(GROUPData, selectedTraits, shortnames = c("am", "bs", "ls", "os")) {
  require(missForest)
  columnsTraits <- 1:(which(colnames(GROUPData) == "Eigen.1") - 1)
  GROUPData[, columnsTraits] <- log10(GROUPData[, columnsTraits])

  # NOTE: All traits are kept for imputation
  columsImputation <- 1:(which(colnames(GROUPData) == "IUCN") - 1)
  GROUPTraitslogImputed <- as.matrix(missForest(xmis = GROUPData[, columsImputation])$ximp)

  GROUPTraitsImputed <- GROUPTraitsMissing <- GROUPData
  GROUPTraitsImputed[, columnsTraits] <- GROUPTraitslogImputed[, columnsTraits]

  GROUPTraitsMissing <- GROUPTraitsMissing[, selectedTraits]
  GROUPTraitsImputed <- GROUPTraitsImputed[, selectedTraits]
  colnames(GROUPTraitsMissing) <- colnames(GROUPTraitsImputed) <- shortnames

  GROUPOtherInfo <- GROUPData[, (max(columnsTraits) + 1):ncol(GROUPData)]
  GROUPTraitsImputed <- data.frame(GROUPTraitsImputed, IUCN = GROUPData$IUCN)
  GROUPTraitsMissing <- data.frame(GROUPTraitsMissing, IUCN = GROUPData$IUCN)

  return(list(GROUPTraitsImputed, GROUPTraitsMissing))
}