在比较data_frames时如何在test中设置expect_equal的容差?

时间:2016-06-10 00:42:51

标签: r dplyr testthat

当我检查两个data_frames是否相等时,我在使用testthat的容差参数时遇到了麻烦。这是一个包含两个数据框的简单示例:

library(dplyr)
library(testthat)
d1 = data_frame(a = c(1, 1),
                b = c(2, 2))
d2 = data_frame(a = c(1, 1.00001),
                b = c(2, 2))

当我检查是否相等时,即使有足够高的容差值,testthat也会抛出错误:

expect_equal(d1, d2,
             tolerance = 0.01)

# Error: d1 not equal to d2
# Rows in y but not x: 2. Rows with difference occurences in x and y: 1

比较各个向量时不会抛出错误:

expect_equal(d1$a, d2$a,
             tolerance = 0.01)
expect_equal(d1$b, d2$b,
             tolerance = 0.01)

有什么建议吗?我假设我误用了expect_equal函数,但我不确定除了在数据帧的各个列上运行expect_equal之外如何解决。

这是我正在使用的软件包版本:

packageVersion("dplyr")
# [1] ‘0.4.3’
packageVersion("testthat")
# [1] ‘0.11.0’

1 个答案:

答案 0 :(得分:1)

这个问题好像已经解决了。

library(dplyr)
library(testthat)

d1 = data_frame(a = c(1, 1), b = c(2, 2))
d2 = data_frame(a = c(1, 1.00001), b = c(2, 2))

expect_equal(d1, d2, tolerance = 0.01)

现在测试出来了。