【发布时间】:2012-12-14 23:39:30
【问题描述】:
我正在尝试使用testthat 包进行一些单元测试,但我似乎无法让它与rms 包一起正常工作。下面的例子:
library(rms)
set.seed(10)
ds <- data.frame(
ftime = rexp(200),
fstatus = sample(0:1,200,replace=TRUE),
x1 = runif(200),
x2 = runif(200),
x3 = factor(sample(LETTERS[1:3], size=200, replace=TRUE)))
ddist <- datadist(ds)
options(datadist="ddist")
s <- Surv(ds$ftime, ds$fstatus == 1)
fit <- cph(s ~ x1 + x2 + x3, data=ds)
返回此错误:
设计错误(eval.parent(m)): 未找到选项的数据集 ddist(datadist=)
这即使 print(ddist) 有效并且 options("datadist") 返回正确的变量。 testthat 是否有不同的变量范围导致错误?
更新
我通过在我的包目录 (Eclipse StatET) 中启动的 R 控制台运行测试:
library(testthat)
test_dir("inst/tests")
q()
R CMD check --as-cran 也会出现同样的错误
【问题讨论】:
-
@agstudy:添加了我如何运行测试
-
Harrell 和 Wickham 教授都曾(或曾经)使用过可能接近或不接近 R Core 的编程技术。因此,可能会出现持续超过四个小时的副作用。我想你可能刚遇到一个。如果您想保留rms,可以尝试其他两个单元测试包。 -
目前无法重现。 R 2.15.2、MacOS 10.6.8、R.app GUI 1.53 (6335)、
testthat版本 0.7、evaluate0.4.2(并使用evaluate0.4.3 重新测试)。也许是 StatET 劫持了通常的路径有问题?我不知道您所说的相同错误是什么意思:R CMD check --as-cran这是完整的命令行条目(我输入时出错,但与rms无关)? -
@DWin:我使用 Windows 7、R 2.15.2 64 位、testthat v 0.7、评估 0.4.3 和最新的 rms 包 3.6-2。 R CMD 只是对我的包裹进行检查。
-
@DirkEddelbuettel:我真的很喜欢 Hmisc/rms 包中的工具,我自己的包是为了补充其中的一些,比如降价替代 latex()。我设置单元测试的原因是通过重组 Predict()、predictrms()、contrast() 和 summary.rms() 看看我是否能理解一些代码——它们都有自己的计算置信区间。在我看来,这似乎是个坏主意,尤其是因为 Predict() 似乎是唯一能够正确处理自举估计的方法(使用 coef.reps=TRUE)。