#rpca command rpca <- function(dat) { dat <- dat[complete.cases(dat),] nr <- nrow(dat) nc <- ncol(dat) heikin <- apply(dat, 2, mean) bunsan <- apply(dat, 2, var) sd <- sqrt(bunsan) eval <- (result <- eigen(r <-cor(dat)))$values evec <- result$vectors cum.contr <- cumsum(contr <- eval/nc*100) fl <- sqrt(matrix(eval, nc, nc, byrow=TRUE))*evec fs <- scale(dat)%*%evec*sqrt(nr/(nr-1)) names(heikin) <- names(bunsan) <- names(sd) <- rownames(r) <- colnames(r) <- rownames(fl) <- paste("Var",1:nc) names(eval) <- names(contr) <- names(cum.contr) <- colnames(fl) <- colnames(fs) <- paste("PC", 1:nc) list(mean=heikin, variance=bunsan, standard.deviation=sd, r=r, factor.loadings=fl, eval=eval, contribution=contr, cum.contribution=cum.contr, fs=fs) }