Вычисление скалярного произведения между всеми парами столбцов в кадре данных
У меня есть 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