Если мы сравниваем поэлементно, а затем преобразовать «A» в matrix
, проверить, соответствуют ли элементы %in%
B, преобразование логического вектора matrix
, получить индекс строки с which/arr.ind=TRUE
и на основе этого найти имена строк.
row.names(A)[unique(which(`dim<-`(as.matrix(A) %in% B, dim(A)), arr.ind=TRUE)[,1])]
#[1] "b" "d"
Или, если мы сравниваем соответствующие столбцы в «A» и «B», мы можем сделать с mapply
, получить rowSums
, проверить, является ли это 2 и найти имена строк на основе этого индекса ,
row.names(A)[rowSums(mapply(function(x,y) x %in% y, A, as.data.frame(B)))==2]
Или мы можем paste
столбцы вместе и сравнить
row.names(A)[do.call(paste, A) %in% paste(B[,1], B[,2])]
#[1] "b" "d"
ПРИМЕЧАНИЕ: Все эти методы основаны на base R
спасибо милан за вас быстрый ответ! Я думаю, что ваш путь быстрый и эффективный! –
@CHUNMING SHI; спасибо за комментарии и приветствуются! – milan