从向量创建colnumbers矩阵

时间:2014-07-05 13:52:36

标签: r vector matrix

假设我有一个大小为10的向量。如何创建一个矩阵,其中矢量元素的位置如此排列。

     1    2    3    4    5    6    7    8    9    10
     2    3    4    5    6    7    8    9   10     1
     3    4    5    6    7    8    9   10    1     2
     4    5    6    7    8    9   10    1    2     3
     5    6    7    8    9   10    1    2    3     4
     6    7    8    9   10    1    2    3    4     5
     7    8    9   10    1    2    3    4    5     6
     8    9   10    1    2    3    4    5    6     7
     9   10    1    2    3    4    5    6    7     8
    10    1    2    3    4    5    6    7    8     9

2 个答案:

答案 0 :(得分:3)

你可以:

x = 1:10
matrix(x, nrow = length(x), ncol = length(x) + 1, byrow = T)[, -(length(x) + 1)]
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,]    1    2    3    4    5    6    7    8    9    10
# [2,]    2    3    4    5    6    7    8    9   10     1
# [3,]    3    4    5    6    7    8    9   10    1     2
# [4,]    4    5    6    7    8    9   10    1    2     3
# [5,]    5    6    7    8    9   10    1    2    3     4
# [6,]    6    7    8    9   10    1    2    3    4     5
# [7,]    7    8    9   10    1    2    3    4    5     6
# [8,]    8    9   10    1    2    3    4    5    6     7
# [9,]    9   10    1    2    3    4    5    6    7     8
#[10,]   10    1    2    3    4    5    6    7    8     9

正如@flodel在评论中指出的那样,您也可以使用额外的行构建矩阵并将其删除。而且,使用更好的格式:head(matrix(x, nrow = length(x) + 1 , ncol = length(x)), -1)

答案 1 :(得分:1)

这个怎么样?

sapply(1:10, function(idx){ 
 vec <- 1:10
 if(idx != 1){
  vec <- c(vec[idx:10], 1:(idx-1))
 }
 vec
 }
)