了解矩阵子设置:`mat [2,mat [1,] == 1] == 1`

时间:2019-05-08 20:26:24

标签: r

请参见this answer

我无法理解以下内容:

   mean(sim[2, sim[1, ] == 1] == 1)
   # [1] 0.4583333

如果可能的话,那么为什么下面的数字为0?

 > sim = matrix(c(1,2,1,2,1,2), nrow = 2, ncol = 3, byrow = TRUE)
 > sim
      [,1] [,2] [,3]
 [1,]    1    2    1
 [2,]    2    1    2
 > 
 > # list 2nd row of the matrix
 > row2 <- sim[2, sim[1, ] == 1] == 1
 > row2
 [1] FALSE FALSE
 > 
 > mean(row2)
 [1] 0

1 个答案:

答案 0 :(得分:1)

您实质上是在取逻辑值的平均值-TRUE或FALSE。平均值是将每个FALSE值计算为0,每个TRUE值计算为1。因此,在第2行中,您有两个FALSE值,平均值为(0 + 0)/ 2 =0。在第1行中,您有两个TRUE值,其中a (1 + 1)/ 2 = 1的平均值。

sim = matrix(c(1,2,1,2,1,2), nrow = 2, ncol = 3, byrow = TRUE)

row2 <- sim[2, sim[1, ] == 1] == 1
row2
mean(row2)

row1 <- sim[1, sim[1, ] == 1] == 1
row1
mean(row1)