使用 %in% 后如何引用多个数据框和列?

How do you refer to multiple dataframes and columns after using %in%?

我有 3 个数据框。我需要删除行名不存在于所有三个数据框中的所有行。我没有对行进行转置、合并、拆分和重新标记,而是在两个数据帧的情况下使用它:

df1 = df1[rownames(df1) %in% rownames(df2), ]
df2 = df2[rownames(df2) %in% rownames(df1), ]

这样做会使 df1 删除所有未出现在第二个数据集中的行,反之亦然。

但是我如何为 3 或 4 个数据集执行此操作?我需要这样的东西:

df1 = df1[rownames(df1) %in% c(rownames(df2), rownames(df3)), ]

但这似乎使它删除了 df2 和 df3 中都不存在的行,而我需要删除 df2 中不存在的行以及 df3 中不存在的任何行。

例如,如果:

df1 有三行,行名分别为 x1、x2 和 x3

df2 有行 x2、x3、x4

df3 有 x3、x4、x5 行

三者唯一共同的行是 x3,因此我希望从三个数据框中删除所有其他行。

也许您要找的只是 & ?

df1 <- data.frame(a = c(1,2,3), row.names = c("x1","x2","x3"))
df2 <- data.frame(b = c(2,3,4), row.names = c("x2","x3","x4"))
df3 <- data.frame(c = c(3,4,5), row.names = c("x3","x4","x5"))

df1[rownames(df1) %in% rownames(df2) & rownames(df1) %in% rownames(df3),
    , drop = F] # the drop = F is here only so you see the dimnames
   a
x3 3