【发布时间】:2020-01-21 10:17:38
【问题描述】:
我有一个返回数据框的例程。我想检查它的值是否合理。使用testthat 我有expect_equal,但我不确定它是否适用于data.frames。我试图这样做,但它不起作用
testthat::expect_equal(result$ORs[1,1:3], c(1.114308, 0.5406599, 2.296604), tolerance=1.0e-6)
这是我收到的消息
─────────────────────────────────────────────────
test-xxx.R:19: failure: basic functionality
result$ORs[1, 1:3] not equal to c(1.114308, 0.5406599, 2.296604).
Modes: list, numeric
names for target but not for current
Attributes: < Modes: list, NULL >
Attributes: < Lengths: 2, 0 >
Attributes: < names for target but not for current >
Attributes: < current is not list-like >
─────────────────────────────────────────────────
══ Results ══════════════════════════════════════
Duration: 0.1 s
【问题讨论】:
-
您要测试整个数据框还是只测试特定行?还是将整行映射到多个值?
-
@NelsonGon 理想情况下,在这种情况下,我想检查每个值是否在给定的容差范围内。这对于小数据帧来说是微不足道的,但对于较大的数据帧,我将使用子集或沿列或行求和来检查最终值。
-
不太确定,但您能解释一下它是如何失败的吗?使用“较低级别”
compare和all.equal进行测试似乎有效。 -
@NelsonGon 编辑错误