%in%でdata.frameを使用できますが、検索する名前が何千もある場合は遅くなる可能性があります。
data.tableを使用することをお勧めします。これは、インデックス列を並べ替え、数百万のレコードでもほぼ瞬時にデータベース結合を実行できるためです。詳細については、data.tableのドキュメントをお読みください。
大きなdata.frameと小さなdata.frameがあるとします。
library(data.table)
big <- data.frame(names=1:5, data=1:5)
small <- data.frame(names=c(1, 3, 6))
それらをdata.tableオブジェクトにし、キー列を名前に設定します。
big <- data.table(big, key='names')
small <- data.table(small, key='names')
次に、結合を実行します。data.tableの[]を使用すると、data.tableを別のdata.tableのキー列でインデックス化できます。この場合、同じくsmallであるbigの行を返します。名前がsmallであるが、bigではない場合、データが欠落します。
big[small]
# names data
# 1: 1 1
# 2: 3 3
# 3: 6 NA