R 从数据帧中删除与另一个数据帧中的两列匹配的行

R 从数据帧中删除与另一个数据帧中的两列匹配的行,r,match,R,Match,我正在努力从R中的数据帧中删除行,其中来自不同列的值匹配第二个数据帧中来自不同列的两个值 例如,给定以下伪数据: ID1 <- c(5,10,6) ID2 <- c(3,5,4) Value <- rnorm(3) DF1 <- data.frame(ID1, ID2, Value) x <- c() y <- c() z <- c() for (i in 1:10){ a <- rep(i, 10) b <- c(1:10) c <

我正在努力从R中的数据帧中删除行,其中来自不同列的值匹配第二个数据帧中来自不同列的两个值

例如,给定以下伪数据:

ID1 <- c(5,10,6)
ID2 <- c(3,5,4)
Value <- rnorm(3)
DF1 <- data.frame(ID1, ID2, Value)

x <- c()
y <- c()
z <- c()

for (i in 1:10){
a <- rep(i, 10)
b <- c(1:10)
c <- rnorm(10)
x <- c(x, a)
y <- c(y, b)
z <- c(z, c)
}

DF2 <- data.frame(x, y, z)
ID1制作排除列表

excl <- data.frame(
  x = c(DF1$ID1, DF1$ID2),
  y = c(DF1$ID2, DF1$ID1))
或者按照评论中的建议使用粘贴:

DF2[! paste(DF2$x, DF2$y) %in% 
      c(paste(DF1$ID1, DF1$ID2),
        paste(DF1$ID2, DF1$ID1)), ]

另一个选项是使用@zx8754的
excl
match_df
功能的
plyr

library(plyr)
DF2[-as.numeric(rownames(match_df(DF2,excl))),]

或者在粘贴后使用%
中的
%
library(plyr)
DF2[-as.numeric(rownames(match_df(DF2,excl))),]