すべてのデータ フレームに存在しない行名を除外する場合、マージはあまり効率的ではありません。ここで別の提案です。
まず、3 つのデータ フレームの例:
df1 <- data.frame(a = 1:5, b = 1:5,
row.names = letters[1:5]) # letters a to e
df2 <- data.frame(a = 1:5, b = 1:5,
row.names = letters[3:7]) # letters c to g
df3 <- data.frame(a = 1:5, b = 1:5,
row.names = letters[c(1,2,3,5,7)]) # letters a, b, c, e, and g
# row names being present in all data frames: c and e
データ フレームをリストに入れます。
dfList <- list(df1, df2, df3)
一般的な行名を検索します。
idx <- Reduce(intersect, lapply(dfList, rownames))
データの抽出:
df1[idx, ]
a b
c 3 3
e 5 5
PS。すべてのデータ フレームから対応する行を保持する場合は、最後のステップdf1[idx, ]
を次のコマンドに置き換えることができます。
do.call(rbind, lapply(dfList, "[", idx, ))