Wrapper around missForest to impute missing trait values for a taxonomic group.
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))
}