首页 > 解决方案 > 如何处理 R 中矩阵中的无限值?

问题描述

我有一个我怀疑有一些无限元素的矩阵。

我有两个问题:

  1. 是否有类似 sum(is.na) 的等效计数函数,它为我提供矩阵中的无穷数?
  2. 我想用另一个向量计算矩阵每一行的点积。如何忽略无限值?sum 函数中的 na.rm = T 函数。

谢谢

标签: rmatrixerror-handlingmultiplicationinfinite

解决方案


试试这个,但要确保你的输入数据是类矩阵:

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)])
})

推荐阅读