【发布时间】:2013-06-25 23:46:28
【问题描述】:
我有 4 个数据框,并且想查找其某一列中的值在任何其他数据框中都不存在的行。我写了这个函数:
#function to test presence of $Name in 3 other datasets
common <- function(a, b, c, d) {
is.B <- is.numeric(a$Name %in% b$Name) == 1
is.C <- is.numeric(a$Name %in% c$Name) == 1
is.D <- is.numeric(a$Name %in% d$Name) == 1
t <- as.numeric(is.B & is.C & is.D)
t
}
但是,输出总是 t = 0。这意味着它告诉我在任何数据集中都没有唯一的行,即使数据帧的行数非常不同。由于任何数据框中都没有重复的行,因此对于最大数据集中的至少一些行,我应该得到 t = 1。有人能弄清楚我做错了什么吗?
【问题讨论】:
-
你为什么使用
is.numeric(数字测试)?你的意思是as.numeric?你甚至不需要那个;为什么不只使用逻辑值? -
设置类似
all(a$Name %in% b$Name, a$Name %in% c$Name, a$Name %in% d$Name). -
@HongOoi 感谢您指出这一点,这是我的错误。
-
@Thomas 这是一个有趣的解决方案!