Ваша функция преобразует разреженную матрицу в полную символьную матрицу. Если у вас большая матрица сроков документа, это приведет к длительному времени выполнения и хорошим шансам получения ошибки памяти. Замена значений в разреженной матрице может быть выполнена быстро, если вы используете способ построения матрицы. Значения разреженной матрицы хранятся в части матрицы v
(значения). Смотри ?slam::simple_triplet_matrix
.
Использование любого семейства apply на разреженной матрице без использования функций, предназначенных для работы с разреженной матрицей, превратит ее в нормальную (плотную) матрицу. С соответственно долгим временем выполнения и проблемами с памятью.
Чтобы изменить все значения, отличные от 0 в вашем случае, просто используйте следующее:
data_dtm$v[data_dtm$v > 0] <- 1
inspect(data_dtm) # show first 10 columns and rows
Это заменяет все значения на 1 и сохраняет данные в виде матрицы терминов документа (также хорошо и разреженно).
В зависимости от вашего последующего анализа данных вам действительно следует использовать функции разреженных матриц. Если вы хотите преобразовать матрицу терминов большого документа в data.frame или data.table, у вас есть хорошие шансы исчерпать память.
Для любых последующих вопросов, пожалуйста, включите воспроизводимый пример и ожидаемый результат.