如何处理 R 中矩阵中的无限值?
How does one handle infinite values in matrices in R?
我有一个矩阵,我怀疑它有一些无限元素。
我有两个问题:
- 是否有类似 sum(is.na) 的等效计数函数,它为我提供了矩阵中无穷大的数量?
- 我想计算矩阵的每一行与另一个向量的点积。我如何忽略无限值? sum 函数中的 na.rm = T 函数之类的东西。
谢谢
试试这个,但要确保你的输入数据是 class 矩阵:
set.seed(1)
# make data
n <- 20
m <- 10
M <- matrix(rnorm(n*m), n, m)
# add Infs
M[sample(x = length(M), size = length(M)*0.1)] <- Inf
image(seq(n), seq(m), M, xlab = "rows", ylab = "columns")
# here is the vector that you want to multiply each row with
multVec <- seq(m)
# apply with removal of non-finite values
res <- apply(M, 1, function(x){
tmp <- x * multVec
sum(tmp[is.finite(tmp)])
})
我有一个矩阵,我怀疑它有一些无限元素。
我有两个问题:
- 是否有类似 sum(is.na) 的等效计数函数,它为我提供了矩阵中无穷大的数量?
- 我想计算矩阵的每一行与另一个向量的点积。我如何忽略无限值? sum 函数中的 na.rm = T 函数之类的东西。
谢谢
试试这个,但要确保你的输入数据是 class 矩阵:
set.seed(1)
# make data
n <- 20
m <- 10
M <- matrix(rnorm(n*m), n, m)
# add Infs
M[sample(x = length(M), size = length(M)*0.1)] <- Inf
image(seq(n), seq(m), M, xlab = "rows", ylab = "columns")
# here is the vector that you want to multiply each row with
multVec <- seq(m)
# apply with removal of non-finite values
res <- apply(M, 1, function(x){
tmp <- x * multVec
sum(tmp[is.finite(tmp)])
})