R 比较两个表并返回不匹配的列表

R 比较两个表并返回不匹配的列表,r,R,我希望能够比较两个表,让R返回一个不匹配的记录和变量列表 例如,使用以下两个表 > df1 id let num 1 1a a 1 2 2b b 2 3 3c c 3 4 4d d 4 5 5e e 5 > df2 id let num 1 1a a 1 2 2b b 2 3 3c c 3 4 4d e 4 5 5e d 5 我希望compare()函数返回类似“id=4d,let”的内容,让我

我希望能够比较两个表,让R返回一个不匹配的记录和变量列表

例如,使用以下两个表

> df1
  id let num
1 1a   a   1
2 2b   b   2
3 3c   c   3
4 4d   d   4
5 5e   e   5
> df2
  id let num
1 1a   a   1
2 2b   b   2
3 3c   c   3
4 4d   e   4
5 5e   d   5
我希望compare()函数返回类似“id=4d,let”的内容,让我知道id=4d的记录中的let变量不匹配


我在CRAN中看到了compare库,但是如果存在不匹配,它只返回整个变量的TRUE或FALSE。是否有具有不同比较函数的库,或手动执行此操作的方法?

您指的是类似于
的东西,即
?快速重现示例:

> m1 <- m2 <- matrix(1:9, 3)
> diag(m1) <- 0
> which(m1 != m2, arr.ind = TRUE)
     row col
[1,]   1   1
[2,]   2   2
[3,]   3   3
m1
df1类似于:

df_diff <- list()

 for (i in 1:ncol(df1)) 
{
 df_diff[[i]] <- df1$id[df2[i] != df1[i]]
 names(df_diff)[i] <- names(df1)[i]
}

df_diff您也可以使用
df$让我知道。我一开始写的和你一模一样。最后,我修改了我的代码,使其更加明确。这很酷。我也喜欢显式编码风格,实际上我将其修改为
df$let
df_diff <- list()

 for (i in 1:ncol(df1)) 
{
 df_diff[[i]] <- df1$id[df2[i] != df1[i]]
 names(df_diff)[i] <- names(df1)[i]
}