я могу определить sparse Matrix с использованием вектора для I, J и х:Extract я и J из разреженной матрицы
i <- c(1,3:8)
j <- c(2,9,6:10)
x <- 7 * (1:7)
(A <- sparseMatrix(i, j, x = x))
Я хочу, чтобы извлечь i
, j
и x
элементы из этой разреженной матрицы , поэтому я могу заново создать матрицу в другом пакете. Это очень просто с i
и x
:
i <- [email protected] + 1
x <- [email protected]
(Обратите внимание, что порядок г и х изменилось, но их относительное объединение одно и то же: я = 4 все еще находится в том же месте, х = 21)
Однако последний элемент разреженной матрицы: p
: «числовой (целочисленный) вектор указателей, по одному для каждого столбца (или строки), к начальному (нулевому) индексу элементов в столбце (или строки). "
Как можно преобразовать [email protected]
и [email protected]
в начало j
элемент, используемый для определения матрицы?
Спасибо! Если я делаю 'j <- findInterval (seq (A @ x) -1, A @ p [-1]) + 1' then' (B <- sparseMatrix (i, j, x = x)) 'then' all .equal (A, B) 'Я верю. Я проверил это на некоторых других объектах 'dgCMatrix', и этот метод работает. Спасибо! – Zach
Хм, я просто думал об этом, и могут возникнуть проблемы с кодом с матрицами с 0 или 1 элементом (ов), поэтому, если вы пишете код для этого, вам может понадобиться изучить угловые случаи. – nograpes
сделаю. К счастью, в моем случае использование матриц имеет миллионы элементов. Если матрица отображается с 0 или 1 элементом, скрипт вернет ошибку, даже если пройдет несколько первых строк. – Zach