我有两个数据帧,行数不同,但列数相同。在下面的例子中,数据帧1是4 x 2,数据帧2是3 x 2.我需要一个4 x 3逻辑矩阵,其中TRUE表示数据帧中的所有行匹配。这个例子可以工作,但需要很长时间才能运行更大的数据帧(我尝试使用两个大约5,000行的数据框,但仍然只有两列)。有没有更有效的方法来做到这一点?有没有比较两个数据帧的有效方式
> df1 <- data.frame(row.names=1:4, var1=c(TRUE, TRUE, FALSE, FALSE), var2=c(1,2,3,4))
> df2 <- data.frame(row.names=5:7, var1=c(FALSE, TRUE, FALSE), var2=c(5,2,3))
>
> m1 <- t(as.matrix(df1))
> m2 <- as.matrix(df2)
>
> apply(m2, 1, FUN=function(x) { apply(m1, 2, FUN=function(y) { all(x==y) }) })
5 6 7
1 FALSE FALSE FALSE
2 FALSE TRUE FALSE
3 FALSE FALSE TRUE
4 FALSE FALSE FALSE
在此先感谢您的帮助。
我在这里被这里所吸引,因为@ flodel在R博客上看到过你的帖子。连锁反应。 – Frank