Вот что я делаю:
- Загрузка разреженной матрицы из файла.
- Извлечение индексов (столбец, строка), которые имеют значения в этой разреженной матрице.
- Используйте эти индексы и значения для дальнейших вычислений.
Это прекрасно работает, когда я выполняю шаги в командной строке R. Но когда это делается внутри функции пакета, на шаге 2 выдается следующая ошибка :
Error in which(matA != 0, arr.ind = TRUE) :
argument to 'which' is not logical
Вот пример кода с примером:
matA <- as(Matrix(c(0,1,2,1,0,0,3,0,2), nrow=3, ncol=3), "sparseMatrix") # Step 1
nz <- which(matA != 0, arr.ind = TRUE) # Step 2
> nz
row col
[1,] 2 1
[2,] 3 1
[3,] 1 2
[4,] 1 3
[5,] 3 3
Загруженные матрицы в моем случае имеют тип: dsCMatrix, dgCMatrix.
class(matA != 0): lsCMatrix
Я не понимаю, почему это должно привести к ошибке.
Обратите внимание на следующее:
- Невозможно предоставить файл сброшенной разреженной матрицы. Отсюда показан пример создания фиктивной матрицы для шага 1.
- Размеры разреженной матрицы огромны. Поэтому преобразование разреженной матрицы в обычную матрицу превышает ограничение памяти.
Библиотеки : в пакете, который я использую, упоминаются следующие библиотеки:
Suggests:
testthat (>= 2.1.0),
knitr,
rmarkdown
Imports:
irlba,
text2vec,
dplyr,
magrittr,
Matrix,
readr,
rlang,
data.table,
stringr,
here