Как обращаться с бесконечными значениями в матрицах в R? - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть матрица, в которой, я подозреваю, есть бесконечные элементы.

У меня два вопроса:

  1. Существует ли эквивалентная функция подсчета, такая как сумма (is.na), которая предоставляет мне количество бесконечностей в матрице?
  2. Я хотел бы рассчитать скалярное произведение каждой строки моей матрицы с другим вектором. Как я игнорирую бесконечные значения? Что-то вроде функции na.rm = T в функции sum.

Спасибо

1 Ответ

1 голос
/ 01 апреля 2020

Попробуйте, но убедитесь, что ваши входные данные имеют матрицу классов:

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