如果行和列在R中为特定数字,如何填充矩阵?

时间:2018-12-08 09:00:37

标签: r loops matrix

我想创建一个矩阵,使得如果(第n行-第n列)= 2或3,则应该用一些数字(例如5)填充。

所以matrix [7,9] = 5;和matrix [5,2] = 5;和matrix [13,15] = 5等等。

我尝试了

matrix <- matrix(nrow = n, ncol = n)
for (i in matrix[i,]){
  for (j in matrix[,j]){
    ifelse(((i-j) == 2|3), 5, 0)
  }
}

很显然,这是错误的,因为ij不对应于第一,第二... n行/列。请帮帮我。

1 个答案:

答案 0 :(得分:1)

这是使用rowcol的一种方式

n <- 10
mat <- matrix(nrow = n, ncol = n) 

row_col_diff <- row(mat) - col(mat)
mat[row_col_diff ==  2 | row_col_diff ==  3] <- 5
mat
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,]   NA   NA   NA   NA   NA   NA   NA   NA   NA    NA
# [2,]   NA   NA   NA   NA   NA   NA   NA   NA   NA    NA
# [3,]    5   NA   NA   NA   NA   NA   NA   NA   NA    NA
# [4,]    5    5   NA   NA   NA   NA   NA   NA   NA    NA
# [5,]   NA    5    5   NA   NA   NA   NA   NA   NA    NA
# [6,]   NA   NA    5    5   NA   NA   NA   NA   NA    NA
# [7,]   NA   NA   NA    5    5   NA   NA   NA   NA    NA
# [8,]   NA   NA   NA   NA    5    5   NA   NA   NA    NA
# [9,]   NA   NA   NA   NA   NA    5    5   NA   NA    NA
#[10,]   NA   NA   NA   NA   NA   NA    5    5   NA    NA