make.PCA(TRAITS, dimensionsAux, savePCA)

Run PCA on a functional trait matrix and save axes and loadings.

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