-4

我正在尝试从向量创建这样的矩阵:

    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在变化。如何编写一个函数来创建这个矩阵?

4

2 回答 2

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
于 2012-05-31T03:16:32.647 回答
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
于 2012-05-31T02:44:49.450 回答