我有两个数据集,我想知道它们的元素在哪个位置不同,所以我使用下面的代码:
在此示例中,a1和a2是要比较的数据集."a2"有两个不同的元素:一个是[3,1],另一个是[8,2],它是"NA".
a1 <- data.frame(num = 1:8, lib = letters[1:8])
a2 <- a1
a2[[3,1]] <- 2
a2[[8,2]] <- 2
a1; a2
which(a1 != a2, arr.ind = TRUE)
Run Code Online (Sandbox Code Playgroud)
但是,which()函数只能找到一个差异"[3,1]".似乎找不到"NA"的区别.我怎样才能找到[3,1]和[8,2]的差异?
Ron*_*hah 11
那是因为当比较的NA是什么时NA,它不会返回,TRUE或者FALSE因此没有被捕获which
"h" != NA
#[1] NA
Run Code Online (Sandbox Code Playgroud)
我们可能需要额外检查NA元素
which((a1 != a2) | (is.na(a1) != is.na(a2)), arr.ind = TRUE)
# row col
#[1,] 3 1
#[2,] 8 2
Run Code Online (Sandbox Code Playgroud)