Когда я пытаюсь применить функцию log
на той же регулярной и разреженной матрице, полученные результаты отличаются. Есть ли что-нибудь, что я должен иметь в виду при применении этих функций? Ниже приведен воспроизводимый пример.Почему результаты отличаются при использовании логарифмической функции на одной и той же регулярной матрице и разреженной матрице?
TestMatrix = matrix(c(3,1,0,0,0,4,0,1,0,0,2,1,1,2,0,6,1,0,1,0,1,0,0,0,0),5,byrow = TRUE)
TestSparseMatrix = Matrix(TestMatrix,sparse = TRUE)
# Logarithmic function when applied to regular matrix
-log(TestMatrix/rowSums(TestMatrix), 2)
#Output
# [,1] [,2] [,3] [,4] [,5]
#[1,] 0.4150375 2.000000 Inf Inf Inf
#[2,] 0.3219281 Inf 2.321928 Inf Inf
#[3,] 1.5849625 2.584963 2.584963 1.584963 Inf
#[4,] 0.4150375 3.000000 Inf 3.000000 Inf
#[5,] 0.0000000 Inf Inf Inf Inf
# Logarithmic function when applied to Sparse matrix
-log(TestSparseMatrix/rowSums(TestSparseMatrix), 2)
# Output
# [,1] [,2] [,3] [,4] [,5]
#[1,] 0.2876821 1.386294 Inf Inf Inf
#[2,] 0.2231436 Inf 1.609438 Inf Inf
#[3,] 1.0986123 1.791759 1.791759 1.098612 Inf
#[4,] 0.2876821 2.079442 Inf 2.079442 Inf
#[5,] 0.0000000 Inf Inf Inf Inf