我想在 R 中填充一个矩阵,但每一列都必须具有向量的迭代向下移位。所以从某种意义上说,它将是一个下三角矩阵。我的努力是这样的:
x = c(3,4,8,9)
E <- matrix(0,length(x),length(x));E
for (i in 1:nrow(E)){
E[i,1]=x[i]
}
E
for (i in 2:nrow(E)){
for (j in 2:ncol(E)) {
E[i,2] =x[i-1] } }
E
for (i in 3:nrow(E)){
for (j in 3:ncol(E)) {
E[i,3] =x[i-2] } }
E
for (i in 4:nrow(E)){
for (j in 4:ncol(E)) {
E[i,4] =x[i-3] } }
E
Run Code Online (Sandbox Code Playgroud)
每次从向量中删除一个元素。但是有没有更快的方法来减少循环和向量的 n 长度而不是 4,作为一般化?
对不起,我忍不住了。这是另一种基本方法:
x <- c(3,4,8,9)
n <- length(x)
E <- diag(rep(x[1], n))
j <- unlist(sapply(length(x):2, function(i) x[2:i]))
E[lower.tri(E)] <- j
Run Code Online (Sandbox Code Playgroud)
添加到 Rui 的基准代码中,我们得到: