Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.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 - Fatal编程技术网

R中的两个循环矩阵

R中的两个循环矩阵,r,matrix,R,Matrix,如何构造两个循环矩阵 例如,下面的矩阵A是两个循环的,即每一列(第一列除外)都是通过将最后两个元素作为第一个元素从前一列获得的。请注意,第一列是矩阵的生成器 N=12 k=6 x=c(0,0,0,0,1,1,1,1,2,2,2,2) A=matrix(0,N,k) A[,1]=x for( j in 2:ncol(A) ) { A[,j]=c(A[11:12,j-1],A[1:10,j-1]) } > A [,1] [,2] [,3] [,4] [,5] [,6] [1,]

如何构造两个循环矩阵

例如,下面的矩阵
A
是两个循环的,即每一列(第一列除外)都是通过将最后两个元素作为第一个元素从前一列获得的。请注意,第一列是矩阵的生成器

N=12
k=6
x=c(0,0,0,0,1,1,1,1,2,2,2,2)
A=matrix(0,N,k)
A[,1]=x
for( j in 2:ncol(A) )
{
A[,j]=c(A[11:12,j-1],A[1:10,j-1])
}

> A
      [,1] [,2] [,3] [,4] [,5] [,6]
 [1,]    0    2    2    1    1    0
 [2,]    0    2    2    1    1    0
 [3,]    0    0    2    2    1    1
 [4,]    0    0    2    2    1    1
 [5,]    1    0    0    2    2    1
 [6,]    1    0    0    2    2    1
 [7,]    1    1    0    0    2    2
 [8,]    1    1    0    0    2    2
 [9,]    2    1    1    0    0    2
[10,]    2    1    1    0    0    2
[11,]    2    2    1    1    0    0
[12,]    2    2    1    1    0    0

有没有其他方法来构造矩阵
A
?例如,通过使用函数。

您可以使用以下内容:

circular_matrix <- function(x, ncol) {

 coll <- list(x)
 for (i in 1:(ncol-1)) {

  current <- coll[[length(coll)]]
  coll[[length(coll) + 1]] <- c(tail(current, 2), current[1:(length(current) - 2)])

 }

 do.call(cbind, coll)

}

circular_matrix(1:10, 5)
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    1    9    7    5    3
# [2,]    2   10    8    6    4
# [3,]    3    1    9    7    5
# [4,]    4    2   10    8    6
# [5,]    5    3    1    9    7
# [6,]    6    4    2   10    8
# [7,]    7    5    3    1    9
# [8,]    8    6    4    2   10
# [9,]    9    7    5    3    1
#[10,]   10    8    6    4    2
循环矩阵