【问题标题】:How does one handle infinite values in matrices in R?如何处理 R 中矩阵中的无限值?
【发布时间】:2020-07-12 23:35:09
【问题描述】:

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

我有两个问题:

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

谢谢

【问题讨论】:

  • 我想你可以简单地使用:sum(x[is.finite(x)])
  • 我收到以下错误。 is.finite(x) 中的错误:未为类型“列表”实现默认方法
  • @Marcinthebox 提供的解决方案适用于我的数据set.seed(1); n <- 20; m <- 10; M <- matrix(rnorm(n*m), n, m); M[sample(x = length(M), size = length(M)*0.1)] <- Inf

标签: r matrix error-handling multiplication infinite


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-10
    • 2021-12-13
    • 2014-07-24
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    相关资源
    最近更新 更多