比较函数,所有列为TRUE,但总体为FALSE

比较函数,所有列为TRUE,但总体为FALSE,r,R,我比较了两个数据集,24列和71个观察值。这些数据集来自以下两个函数之间的比较(我无法复制th文件,因为它是10000个观测值): 比较包(包比较版本0.2-6索引)的结果如下所示。这怎么可能?我的意思是,如果一切都是真的,那就应该是真的,对吗 compare(x, x1) FALSE [TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TR

我比较了两个数据集,24列和71个观察值。这些数据集来自以下两个函数之间的比较(我无法复制th文件,因为它是10000个观测值):

比较包(包比较版本0.2-6索引)的结果如下所示。这怎么可能?我的意思是,如果一切都是真的,那就应该是真的,对吗

compare(x, x1)

FALSE [TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE]

如果我将两个数据集按一个观察值进行切割,则输出为:

x = x[1:70,]
x1 = x[1:70,]
compare(x, x1)
TRUE


它必须与“x1”中的
tible
属性相关。如果我们转换为
data.frame
,它应该可以工作

library(compare)
compare(x, as.data.frame(x1))
#[1] TRUE
默认情况下,一些参数设置为
FALSE
,即
allowAll
-

allowAll=FALSE)

如果我们将其更改为
TRUE
,它可以通过删除属性自动进行转换

compare(x, x1, allowAll = TRUE)

使用一个小的可重复的例子

library(dplyr)
data(iris)
x <- aggregate(.~ Species, iris, mean, na.rm = TRUE)
x1 <- iris %>% 
         group_by(Species) %>% 
         summarise_all(mean, na.rm = TRUE)
compare(x, x1)
#FALSE [TRUE, TRUE, TRUE, TRUE, TRUE] #// similar to OP's output
或者使用
allowAll=TRUE
执行所需的所有转换

compare(x, x1, allowAll = TRUE)
#TRUE
str(x1)
#tibble [3 × 5] (S3: tbl_df/tbl/data.frame)
# $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 2 3
# $ Sepal.Length: num [1:3] 5.01 5.94 6.59
# $ Sepal.Width : num [1:3] 3.43 2.77 2.97
# $ Petal.Length: num [1:3] 1.46 4.26 5.55
# $ Petal.Width : num [1:3] 0.246 1.326 2.026


compare(x, as.data.frame(x1))
#TRUE
compare(x, x1, allowAll = TRUE)
#TRUE