最佳答案
假设我在 R 中有一个很大的数据集,我只想知道它们中的两个是否相同。当我试验不同的算法以获得相同的结果时,我经常使用它。例如,假设我们有以下数据集:
df1 <- data.frame(num = 1:5, let = letters[1:5])
df2 <- df1
df3 <- data.frame(num = c(1:5, NA), let = letters[1:6])
df4 <- df3
这就是我比较它们的方法:
table(x == y, useNA = 'ifany')
当数据集没有 NAs 时,这种方法非常有效:
> table(df1 == df2, useNA = 'ifany')
TRUE
10
但当他们拥有 NAs 时,情况就不那么乐观了:
> table(df3 == df4, useNA = 'ifany')
TRUE <NA>
11 1
在这个例子中,很容易忽略 NA
,因为我们知道两个数据帧 是是相等的。问题是 NA == <anything>
产生 NA
,所以每当一个数据集有一个 NA
时,不管另一个数据集在同一位置上有什么,结果总是 NA
。
因此,使用 table()
来比较数据集对我来说似乎并不理想
注意: 这不是 比较几个数据集、 在 R 中比较两个数据集或 比较 R 中的数据集的副本