parallel.R
``````"parallel" <-
function(subject=100,var=10,rep=100,cent=0.05)
{
r             <- subject
c             <- var
y             <- matrix(c(1:r*c), nrow=r, ncol=c)
ycor          <- matrix(c(1:c*c), nrow=c, ncol=c)
evpea         <- NULL
leg.txt       <- "Pearson"
# Simulation of k samples to obtain k random eigenvalues vectors
# for Pearson correlation coefficients
for (k in c(1:rep)) {
y              <- rnorm(y)
y              <- matrix(y, nrow=r, ncol=c)
evpea          <- rbind(evpea, eigen(cor(y))[[1]])
}
# Temporay function to compute the standard error of a centile
SEcentile <- function(sd, n = 100, p = 0.95) {return(sd/sqrt(n) * sqrt(p*(1-p))/dnorm(qnorm(p))) }

# Summary statistics
sprob         <- c(cent)
mevpea        <- sapply(as.data.frame(evpea),  mean)                          # Eigenvalues means
sevpea        <- sapply(as.data.frame(evpea),  sd  )                          # Eigenvalues Standard deviations
quant         <- function(x, sprobs = sprobs) {return(as.vector(quantile(x, probs = sprob))) }
qevpea        <- sapply(as.data.frame(evpea),  quant)                         # Eigenvalues centiles
sqevpea       <- sevpea
sqevpea       <- sapply(as.data.frame(sqevpea), SEcentile, n = rep, p = cent) # Standard error of the centiles

# List of results return
result        <- list(eigen     = data.frame(mevpea, sevpea, qevpea, sqevpea),
subject   = r,
variables = c,
centile   = cent
)
class(result) <- 'parallel'                                                  # For future use
return(result)
}

``````