如何产生矩阵

时间:2019-02-27 14:20:43

标签: r matrix

如何在r中以下面的形式生成矩阵?我可以产生一个全为0的矩阵,但是我不确定如何编写for循环来填充其余的矩阵。

a <-10
m<-matrix(0,a,a) 

enter image description here

矩阵的其余部分均为0。

2 个答案:

答案 0 :(得分:1)

这比预期的要难一些:),但是您可以这样做:

createMatrix <- function(n){
  firstCol <- rep(0, n + 2)
  lastCol <- rep(0, n + 2)
  firstCol[c((n + 2), n + 1)] <- c(1 - 1/(n + 2), 1/(n + 1))
  lastCol[c((n + 2), n + 1)] <- c(1/(n + 2), 1 - 1/(n + 1))
  mat1 <- diag(x = 1/(n:1), n, n)[n:1, ]
  mat2 <- diag(x = (1 - 1/(1:n)), n, n)
  mat1[mat1 == 0] <- mat2[mat1 == 0]
  unname(cbind(firstCol, rbind(mat1, rep(0, n), rep(0, n)), lastCol))
}

> createMatrix(4)
          [,1] [,2]      [,3]      [,4] [,5]      [,6]
[1,] 0.0000000 0.00 0.0000000 0.0000000 1.00 0.0000000
[2,] 0.0000000 0.00 0.5000000 0.5000000 0.00 0.0000000
[3,] 0.0000000 0.00 0.3333333 0.6666667 0.00 0.0000000
[4,] 0.0000000 0.25 0.0000000 0.0000000 0.75 0.0000000
[5,] 0.2000000 0.00 0.0000000 0.0000000 0.00 0.8000000
[6,] 0.8333333 0.00 0.0000000 0.0000000 0.00 0.1666667

答案 1 :(得分:0)

要填充一个对角线,您可以使用:

 diag(m) <- "1-1/n"

对于其他对角线,您可以使用循环(因为我无法对其他对角线进行计算)。