Вычисление скалярного произведения между всеми парами столбцов в кадре данных

У меня есть R data frame какие столбцы являются логическими переменными. Мне нужно сделать какой-то точечный продукт между всеми возможными парами столбцов.

Это вытекает из анализа текстового корпуса, где фрейм данных указывает, какие термины (строки) присутствуют в каких документах (столбцах). Существуют общие быстрые решения для случая, когда требуется вычислить расстояния с каждой возможной парой столбцов, используя daisy от cluster пакет или cosine от lsa пакет.

Однако вместо этого мне нужно было бы использовать какой-то точечный продукт между всеми парами столбцов: цель состоит в том, чтобы подсчитать, сколько слов одновременно присутствует в обоих сравниваемых документах (и это для каждой пары).

1 ответ

Решение

Давайте использовать этот пример:

df <- data.frame(x1 = c(T, T, F), x2 = c(F, F, F), x3 = c(T, F, T))

Я хотел бы превратить data.frame в матрицу, а затем вычислить перекрестный продукт:

crossprod(data.matrix(df))
#    x1 x2 x3
# x1  2  0  1
# x2  0  0  0
# x3  1  0  2
Другие вопросы по тегам