我正在尝试从向量创建这样的矩阵:
vec =c(1, 2, 3)
> A
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 0 0 0
[2,] 1 2 1 0 0
[3,] 1 3 2 1 0
并且每次向量的长度和值都vec
在变化。如何编写一个函数来创建这个矩阵?
我对这个问题有点迷茫,但是这条线
vec <- 1:3
embed(c(rep(0,length(vec)),vec),length(vec)+1)
...产生您想要的结果的最后一部分:
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 2 1 0 0
[3,] 3 2 1 0
然后您可以将其绑定到向量的第一个数字。
cbind(vec[1],embed(c(rep(0,length(vec)),vec),length(vec)+1))
给...
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 0 0 0
[2,] 1 2 1 0 0
[3,] 1 3 2 1 0
我认为这可能会做到:
vec =c(1, 2, 3)
my.matrix <- matrix(0, nrow=length(vec), ncol=(max(vec)+2))
my.matrix
for(i in 1:length(vec)) {
my.matrix[i,1] <- 1
z <- seq(vec[i], 1, -1)
my.matrix[i,2:(vec[i]+1)] <- z
}
my.matrix