R中的奇怪矩阵行为

时间:2020-03-08 21:07:37

标签: r matrix

如果我这样做:

dim(my_matrix)
[1] 758289    768

typeof(my_matrix)
[1] "double"

max(my_matrix)
[1] 1

my_matrix[my_matrix<=0] = 0.0000001
my_matrix[my_matrix>=1] = 0.9999999

max(my_matrix)
[1] 1

对于使用较小的手工矩阵的这种行为,我没有任何解释。

1 个答案:

答案 0 :(得分:1)

如果元素小于1少一点,您将得到您注意到的行为。矩阵越大,元素稍小于1的机会就越大,这可以解释为什么在较小的矩阵中它不会发生。

m <- matrix(0, 4, 4)
m[1,1] <- 1-1e-10
m.original <- m

max(m)
## [1] 1

m[m <= 0] <- 0.0000001
m[m >= 1] <- 0.9999999

max(m)
## [1] 1

请注意

print(max(m.original), digits = 12)
## [1] 0.9999999999

print(max(m), digits = 12)
## [1] 0.9999999999
相关问题