使用循环

时间:2018-02-20 07:03:03

标签: r dataframe vector rstudio matrix-multiplication

我有数据框' df'它有8 * 8行和列。

这里我直接得到第5次乘法的答案,我希望所有的中间乘法答案。

我还希望代码循环15次,因此将有15个中间乘法输出。

Code: 

p <- eigen(df)$vector
d <- eigen(df)$values

n <- 5
p %*% diag(d^n) %*% solve(p)

预期输出将:如果我乘以n = 15次,则每个中间乘法应该有15个矩阵。

请帮忙。

1 个答案:

答案 0 :(得分:1)

假设您的意思是权力(X ^ n)可以执行以下操作:

mat <- matrix(1:9, nrow=3)
n <- 5

pows <- list()
pows[[1]] <- mat
for (i in 2:n) {
    pows[[i]] <- pows[[i - 1]] %*% pows[[1]]
}

p <- eigen(mat)$vector
d <- eigen(mat)$values
res <- p %*% diag(d^n) %*% solve(p)

all(res - pows[[n]] < 1e-6)

也可以使用:

library(expm)
mat %^% n