R: Как я могу найти пересечение элементов из двух строк кадра данных?

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

intersect(thing[1,],thing[2,])

но он дал мне полный бессмысленный ответ (что-то, что определенно не находится на пересечении, в то же время опуская то, что было на пересечении).

Как мне подойти к этой проблеме?

1 ответ

Если все столбцы имеют одинаковый тип (например, все числа), сначала преобразуйте в матрицу с помощью as.matrix, затем примените пересечение. Например, если фрейм данных называется z:

zz <- as.matrix(z)
intersect(zz[1,], zz[2,])

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

z <- data.frame(AA = c( 1,   1,   3,   4), 
                BB = c( 1,   5,   3,   1),
                CC = c('1', 'a', 'b', 'b'),
                DD = c( 1,   2,   3,   4)
z[z[,1] == z[,3],1]

Хотя здесь будет возвращено "1", "1" может иметь совершенно другое значение для переменной уровня и для числовой переменной, поэтому мы не должны сравнивать числовые переменные и переменные уровня, по крайней мере, без тщательного контроля.

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

Другие вопросы по тегам