从R中的矩阵中删除无限值

ros*_*ose 3 r

m在R中有一个矩阵,我想删除-Inf值,然后计算colMeans所有列.我怎么能在R中这样做?

m <- matrix(c(1, 3, 4, -Inf, 6, 7, 4, -Inf, 6, 0, 1, 3) , nrow = 3)
m
       [,1] [,2] [,3] [,4]
[1,]     1  -Inf    4    0
[2,]     3   6    -Inf   1
[3,]     4   7      6    3
Run Code Online (Sandbox Code Playgroud)

Hug*_*ugh 15

使用is.finite.我认为这就是你希望"删除"这些-Inf值的方式:

m[!is.finite(m)] <- NA
colMeans(m, na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)

  • 我们也有`is.infinite`供我们使用.差异在这里是微不足道的 - 否定`is.finite`将选择相同的元素,除非还有'NaN`值.(但是,分配给`is.infinite`返回的较小元素集可能在大矩阵上更有效.) (6认同)