Я задал подобный вопрос месяц назад. Обратитесь к Count the occurrences of unequal numbers from a data frameКак настроить внешние и векторизовать функции?
Я решил эту проблему с помощью outer
и Vectorize
функций. Мое решение таково:
dist_mat<- outer(1:nrow(df),1:nrow(df),
FUN = Vectorize(function(i,j) sum(df[i,]!=df[j,])))
Это работает отлично, но теперь у меня есть огромная матрица, которая превышает мой размер памяти.
После получения dist_mat
для каждой строки я подсчитываю количество столбцов меньше или равно двум, что я не могу сделать сейчас. Поэтому мне интересно, могу ли я объединить операцию подсчета во внешней функции, чтобы избежать проблемы с памятью. Мой результат будет только вектором.
Спасибо заранее!
Ответы Роланда в другом вопросе также имеют проблемы с памятью? [Редактировать мой комментарий к дальнейшим соображениям: возможно, это происходит, так как это уменьшает количество операций чуть меньше половины, но добавляет еще два столбца.] Это было бы одним из способов исправить проблемы с памятью; если да, то векторизованные операции могли бы как-то использовать желаемые значения. – Aaron