R中带约束的矩阵尺寸调整

R中带约束的矩阵尺寸调整,r,matrix,linear-algebra,R,Matrix,Linear Algebra,我有一个5x5矩阵,看起来像这样 A<- matrix(c(24,18,18,24,56, 0,0,2,8,32, 3,12,6,27,1, 9,8,14,39,51, 34,45,0,17,0),nrow=5,byrow=F) A这并不是那么短,但是如果您想编写一个可重用的函数,它可能会有所帮助 这里,我注意到初始A[1:j,1:j]是第一个子矩阵,知道j可以确定剩余的子矩阵 j <- 2 n <- n

我有一个5x5矩阵,看起来像这样

A<- matrix(c(24,18,18,24,56,
         0,0,2,8,32,
         3,12,6,27,1,
         9,8,14,39,51,
         34,45,0,17,0),nrow=5,byrow=F)

A这并不是那么短,但是如果您想编写一个可重用的函数,它可能会有所帮助

这里,我注意到初始
A[1:j,1:j]
是第一个子矩阵,知道
j
可以确定剩余的子矩阵

j <- 2
n <- nrow(A)
p <- ncol(A)

 matrix(c(sum(A[1:j, 1:j]), sum(A[1:j, (j+1):p]), 
         sum(A[(j+1):n, 1:j]), sum(A[(j+1):n , (j+1):p])),
         nrow = 2, byrow = TRUE)

#      [,1] [,2]
# [1,]   42  111
# [2,]  140  155

j如果您有一个
m x m
矩阵要汇总成
n x n
矩阵,这将起作用,尽管它并不短:

n = 2

#assume m x m matrix
n_row <- nrow(A)
lst = list(1:floor(n_row / n), ceiling(n_row/ n): n_row)

matrix(
  apply(expand.grid(seq_len(n), seq_len(n)),
      1,
      function(i) sum(A[lst[[i[1]]], lst[[i[2]]]])
      ),
  n)
n=2
#假设m×m矩阵

n_row绝对没有我的那么令人困惑。非常感谢。“别担心,@hnguyen。请单击最有帮助的答案旁边的勾号。
n = 2

#assume m x m matrix
n_row <- nrow(A)
lst = list(1:floor(n_row / n), ceiling(n_row/ n): n_row)

matrix(
  apply(expand.grid(seq_len(n), seq_len(n)),
      1,
      function(i) sum(A[lst[[i[1]]], lst[[i[2]]]])
      ),
  n)