在R中创建不同矢量值矩阵的有效方法

时间:2012-05-31 01:25:24

标签: r matrix

我正试图从矢量中创建这样的矩阵:

    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的长度和值都在变化。如何编写函数来创建这个矩阵?

2 个答案:

答案 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