Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过将行添加到具有相同模式的R中的矩阵进行扩展_R_Matrix_Sequence - Fatal编程技术网

通过将行添加到具有相同模式的R中的矩阵进行扩展

通过将行添加到具有相同模式的R中的矩阵进行扩展,r,matrix,sequence,R,Matrix,Sequence,我有矩阵,但想用同样的模式扩展它。请注意,它可以扩展到任何给定数量的行和列,并且通常不是正方形 04/06/2012 11/06/2012 18/06/2012 25/06/2012 02/07/2012 26/03/2012 10 11 12 13 14 02/04/2012 9 10 11 12 13 09/04/2012 8 9 10 11 12 16/04/2012 7 8 9 10 11 23/04/2012 6

我有矩阵,但想用同样的模式扩展它。请注意,它可以扩展到任何给定数量的行和列,并且通常不是正方形

    04/06/2012  11/06/2012  18/06/2012  25/06/2012  02/07/2012
26/03/2012  10  11  12  13  14
02/04/2012  9   10  11  12  13
09/04/2012  8   9   10  11  12
16/04/2012  7   8   9   10  11
23/04/2012  6   7   8   9   10
30/04/2012  5   6   7   8   9
07/05/2012  4   5   6   7   8
14/05/2012  3   4   5   6   7
21/05/2012  2   3   4   5   6
28/05/2012  1   2   3   4   5
也就是说,我想把它扩展到如下内容:

    04/06/2012  11/06/2012  18/06/2012  25/06/2012  02/07/2012
26/03/2012  10  11  12  13  14
02/04/2012  9   10  11  12  13
09/04/2012  8   9   10  11  12
16/04/2012  7   8   9   10  11
23/04/2012  6   7   8   9   10
30/04/2012  5   6   7   8   9
07/05/2012  4   5   6   7   8
14/05/2012  3   4   5   6   7
21/05/2012  2   3   4   5   6
28/05/2012  1   2   3   4   5
04/06/2012  0   1   2   3   4
11/06/2012  NA  0   1   2   3
18/06/2012  NA  NA  0   1   2
25/06/2012  NA  NA  NA  0   1
02/07/2012  NA  NA  NA  NA  0

我相信有一种聪明的方法可以通过
Reduce
或其他方法来实现这一点,但我想到的是:

lengthOut <- 6   ## Set to one less than the number of columns you want to create
startAt <- 10    ## Set the maximum value of the FIRST column
vapply(c(0, sequence(lengthOut)), function(x) { 
  x <- (startAt + x):0                   # Create a sequence in the normal manner
  length(x) <- startAt + lengthOut + 1   # Extend the length of that sequence
  x
}, numeric(startAt + lengthOut + 1))     # Specify what to return
#       [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#  [1,]   10   11   12   13   14   15   16
#  [2,]    9   10   11   12   13   14   15
#  [3,]    8    9   10   11   12   13   14
#  [4,]    7    8    9   10   11   12   13 
#  [5,]    6    7    8    9   10   11   12
#  [6,]    5    6    7    8    9   10   11
#  [7,]    4    5    6    7    8    9   10
#  [8,]    3    4    5    6    7    8    9
#  [9,]    2    3    4    5    6    7    8
# [10,]    1    2    3    4    5    6    7
# [11,]    0    1    2    3    4    5    6
# [12,]   NA    0    1    2    3    4    5
# [13,]   NA   NA    0    1    2    3    4
# [14,]   NA   NA   NA    0    1    2    3
# [15,]   NA   NA   NA   NA    0    1    2
# [16,]   NA   NA   NA   NA   NA    0    1
# [17,]   NA   NA   NA   NA   NA   NA    0

lengthOut我相信有一种聪明的方法可以用
Reduce
或其他东西来实现这一点,但我想到的是:

lengthOut <- 6   ## Set to one less than the number of columns you want to create
startAt <- 10    ## Set the maximum value of the FIRST column
vapply(c(0, sequence(lengthOut)), function(x) { 
  x <- (startAt + x):0                   # Create a sequence in the normal manner
  length(x) <- startAt + lengthOut + 1   # Extend the length of that sequence
  x
}, numeric(startAt + lengthOut + 1))     # Specify what to return
#       [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#  [1,]   10   11   12   13   14   15   16
#  [2,]    9   10   11   12   13   14   15
#  [3,]    8    9   10   11   12   13   14
#  [4,]    7    8    9   10   11   12   13 
#  [5,]    6    7    8    9   10   11   12
#  [6,]    5    6    7    8    9   10   11
#  [7,]    4    5    6    7    8    9   10
#  [8,]    3    4    5    6    7    8    9
#  [9,]    2    3    4    5    6    7    8
# [10,]    1    2    3    4    5    6    7
# [11,]    0    1    2    3    4    5    6
# [12,]   NA    0    1    2    3    4    5
# [13,]   NA   NA    0    1    2    3    4
# [14,]   NA   NA   NA    0    1    2    3
# [15,]   NA   NA   NA   NA    0    1    2
# [16,]   NA   NA   NA   NA   NA    0    1
# [17,]   NA   NA   NA   NA   NA   NA    0

lengthOut不确定这是否有帮助:

m1 <- matrix(rep(10:1,each=7)+0:6,ncol=7,byrow=T)
m2 <- matrix(NA,ncol=7,nrow=7)
indx <- 0:6+rep(c(0:-6),each=7)

m2[lower.tri(m2, diag=TRUE)] <- indx[indx>=0]
rbind(m1,t(m2))
#       [,1] [,2] [,3] [,4] [,5] [,6] [,7]
# [1,]   10   11   12   13   14   15   16
# [2,]    9   10   11   12   13   14   15
# [3,]    8    9   10   11   12   13   14
# [4,]    7    8    9   10   11   12   13
# [5,]    6    7    8    9   10   11   12
# [6,]    5    6    7    8    9   10   11
# [7,]    4    5    6    7    8    9   10
# [8,]    3    4    5    6    7    8    9
# [9,]    2    3    4    5    6    7    8
# [10,]   1    2    3    4    5    6    7
# [11,]   0    1    2    3    4    5    6
# [12,]  NA    0    1    2    3    4    5
# [13,]  NA   NA    0    1    2    3    4
# [14,]  NA   NA   NA    0    1    2    3
# [15,]  NA   NA   NA   NA    0    1    2
# [16,]  NA   NA   NA   NA   NA    0    1
# [17,]  NA   NA   NA   NA   NA   NA    0

m1不确定这是否有帮助:

m1 <- matrix(rep(10:1,each=7)+0:6,ncol=7,byrow=T)
m2 <- matrix(NA,ncol=7,nrow=7)
indx <- 0:6+rep(c(0:-6),each=7)

m2[lower.tri(m2, diag=TRUE)] <- indx[indx>=0]
rbind(m1,t(m2))
#       [,1] [,2] [,3] [,4] [,5] [,6] [,7]
# [1,]   10   11   12   13   14   15   16
# [2,]    9   10   11   12   13   14   15
# [3,]    8    9   10   11   12   13   14
# [4,]    7    8    9   10   11   12   13
# [5,]    6    7    8    9   10   11   12
# [6,]    5    6    7    8    9   10   11
# [7,]    4    5    6    7    8    9   10
# [8,]    3    4    5    6    7    8    9
# [9,]    2    3    4    5    6    7    8
# [10,]   1    2    3    4    5    6    7
# [11,]   0    1    2    3    4    5    6
# [12,]  NA    0    1    2    3    4    5
# [13,]  NA   NA    0    1    2    3    4
# [14,]  NA   NA   NA    0    1    2    3
# [15,]  NA   NA   NA   NA    0    1    2
# [16,]  NA   NA   NA   NA   NA    0    1
# [17,]  NA   NA   NA   NA   NA   NA    0

m1这里是另一种方法

x <- 16:0
matrix(c(sapply(6:1, function(z) rep(lead(x, z))), x), ncol=7)

#      [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#[1,]   10   11   12   13   14   15   16
#[2,]    9   10   11   12   13   14   15
#[3,]    8    9   10   11   12   13   14
#[4,]    7    8    9   10   11   12   13
#[5,]    6    7    8    9   10   11   12
#[6,]    5    6    7    8    9   10   11
#[7,]    4    5    6    7    8    9   10
#[8,]    3    4    5    6    7    8    9
#[9,]    2    3    4    5    6    7    8
#[10,]    1    2    3    4    5    6    7
#[11,]    0    1    2    3    4    5    6
#[12,]   NA    0    1    2    3    4    5
#[13,]   NA   NA    0    1    2    3    4
#[14,]   NA   NA   NA    0    1    2    3
#[15,]   NA   NA   NA   NA    0    1    2
#[16,]   NA   NA   NA   NA   NA    0    1
#[17,]   NA   NA   NA   NA   NA   NA    0

x这里是另一种方法

x <- 16:0
matrix(c(sapply(6:1, function(z) rep(lead(x, z))), x), ncol=7)

#      [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#[1,]   10   11   12   13   14   15   16
#[2,]    9   10   11   12   13   14   15
#[3,]    8    9   10   11   12   13   14
#[4,]    7    8    9   10   11   12   13
#[5,]    6    7    8    9   10   11   12
#[6,]    5    6    7    8    9   10   11
#[7,]    4    5    6    7    8    9   10
#[8,]    3    4    5    6    7    8    9
#[9,]    2    3    4    5    6    7    8
#[10,]    1    2    3    4    5    6    7
#[11,]    0    1    2    3    4    5    6
#[12,]   NA    0    1    2    3    4    5
#[13,]   NA   NA    0    1    2    3    4
#[14,]   NA   NA   NA    0    1    2    3
#[15,]   NA   NA   NA   NA    0    1    2
#[16,]   NA   NA   NA   NA   NA    0    1
#[17,]   NA   NA   NA   NA   NA   NA    0
x