make.PCA(TRAITS, dimensionsAux, savePCA)

Run a PCA on a trait matrix and return axes scores, loadings and explained variance.

statisticsfunctional diversity
Args:TRAITS — species × traits matrixdimensionsAux — number of axes to retainsavePCA — file path to save the result
make.PCA <- function(TRAITS, dimensionsAux, savePCA) {
  paranAux <- paran(TRAITS)
  PCA_TRAITS <- list()
  PCA_TRAITS$traits <- TRAITS
  PCA_TRAITS$PCA <- princomp(PCA_TRAITS$traits)
  PCA_TRAITS$dimensions <- dimensionsAux
  PCA_TRAITS$variance <- (summary(PCA_TRAITS$PCA)[1][[1]]^2)[1:dimensionsAux] /
    sum(summary(PCA_TRAITS$PCA)[1][[1]]^2)
  PCA_TRAITS$loadings <- PCA_TRAITS$PCA$loadings
  PCA_TRAITS$traitsUse <- data.frame(PCA_TRAITS$PCA$scores[, 1:PCA_TRAITS$dimensions])
  if (!is.na(savePCA)) {
    saveRDS(PCA_TRAITS, savePCA)
  }
  return(PCA_TRAITS)
}