Логические матрицы в R - PullRequest
       4

Логические матрицы в R

2 голосов
/ 28 апреля 2020

Так что это общий вопрос, я много работал с R в течение последних 6 месяцев, и хотя я люблю нативные структуры данных, некоторые функции матриц мне немного неясны.

Мой вопрос о том, как R работает с логическими матрицами. Допустим, у меня есть логическая матрица размером n x n, заполненная операторами TRUE и FALSE. Когда я использую LogicalMat для фильтрации MatA (оба одинаковых измерения):

MatA[LogicalMat]

Оцениваются ли значения FALSE в некотором виде l oop на заднем плане? или они просто пропускаются, как какая-то редкая реализация матрицы?

Если нет, есть ли способы создать матрицы, в которых некоторые части матрицы никогда не оцениваются при фильтрации? Я думаю, что связанный список мог бы сделать то же самое, но мне нравится иметь возможность сохранять линейный характер индексации матрицы. Я знаю, что есть пакеты, специально предназначенные для разреженных матриц, но мне интересны нативные структуры.

1 Ответ

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

Во-первых, не забывайте, что матрицы по-прежнему являются векторами внизу R. Единственное различие между вектором и матрицей - это атрибут dim.

Когда вы делаете

MatA[LogicalMat]

Вы выполняете операцию vector, а не matrix. В этом случае, поскольку LogicalMat является логическим вектором, это означает "вернуть записи в MatA, для которых соответствующая запись в LogicalMat равна TRUE. Как правило, это не будет прямой angular, поэтому результат - вектор.

R имеет специфицированный c класс разреженной матрицы sparseMatrix из пакета Matrix, хотя в документации не ясно, оптимизирует ли это операции вида M1[M2] где M2 - разреженная матрица. Вероятно, безопаснее использовать числовые c векторы для поднабора, а не разреженные логические (функция which может помочь вам перейти от одного к другому)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...