我正试图从矢量中创建这样的矩阵:
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
的长度和值都在变化。如何编写函数来创建这个矩阵?
答案 0 :(得分:3)
我在这个问题上有点迷失,但这一行
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
答案 1 :(得分:1)
我认为这可能会这样做:
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