I have a list of elements in R as follows:
set.seed(123)
A <- matrix(rnorm(20 * 20, mean = 0, sd = 1), 20, 20)
B <- matrix(rnorm(20 * 20, mean = 0, sd = 1), 20, 20)
C <- matrix(rnorm(20 * 20, mean = 0, sd = 1), 20, 20)
D <- matrix(rnorm(20 * 20, mean = 0, sd = 1), 20, 20)
E <- matrix(rnorm(20 * 20, mean = 0, sd = 1), 20, 20)
DATA <- list(A,B,C,D,E)
I want for each matrix (A,B,...,E) to find the eigenvalues and combine them in a data frame as follows:
ei1 <- eigen(DATA[[1]])
ei1 <- round(ei1$values, 2)
eigenvalues1 <- as.data.frame(ei1)
ei2 <- eigen(DATA[[2]])
ei2 <- round(ei2$values, 2)
eigenvalues2 <- as.data.frame(ei2)
ei3 <- eigen(DATA[[3]])
ei3 <- round(ei3$values, 2)
eigenvalues3 <- as.data.frame(ei3)
ei4 <- eigen(DATA[[4]])
ei4 <- round(ei4$values, 2)
eigenvalues4 <- as.data.frame(ei4)
ei5 <- eigen(DATA[[5]])
ei5 <- round(ei5$values, 2)
eigenvalues5 <- as.data.frame(ei5)
eigenavules <-
cbind(eigenvalues1,eigenvalues2,eigenvalues3,eigenvalues4,eigenvalues5
)
How can I make this procedure automatically with the apply (or similar) function in instead of manually like above?
We may use
lapplyto loop over thelistand apply the function, extract theeigenvalues and then do the conversion to data.frame at the end-output