调用datadist()和#x2B;设置rms时失败的测试;选项()

调用datadist()和#x2B;设置rms时失败的测试;选项(),r,testthat,R,Testthat,我试图使用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, repla

我试图使用
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)

R CMD检查也会出现同样的错误——正如cran所示,这是一个范围问题

一种可能的解决方法是在调用
test\u dir

例如,像这样创建文件,
runtest.R

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")
library(testthat)
test_dir("inst/tests")
库(rms)
种子(10)

ds虽然@agstudy的建议是正确的,但我已经通过使用@agstudy:添加了我如何运行测试的方法,找到了一个解决该错误的简单方法。众所周知,哈雷尔教授和威克姆教授都(或曾经)使用了可能接近或不接近R Core的编程技术。因此,可能会出现持续时间超过四小时的副作用。我想你可能刚刚遇到一个。如果你想继续使用,你可以尝试另外两个单元测试包。目前无法复制。R 2.15.2、MacOS 10.6.8、R.app GUI 1.53(6335)、
testthat
version 0.7、
evaluate
0.4.2(并使用
evaluate
0.4.3重新测试)。也许是因为通常的路径被StatET劫持了?我不知道你所说的相同错误是什么意思:
R CMD check——正如cran
所说的是完整的命令行条目(当我输入它时,它给出了一个错误,但与
rms
无关)?@DWin:我使用Windows7,R2.15.2 64位,测试V0.7,评估0.4.3和最新的rms包3.6-2。R CMD只是我的软件包的cran检查。@DirkEddelbuettel:我非常喜欢Hmisc/rms软件包中的工具,我自己的软件包是为了补充其中的一些工具,比如latex()的降价替代品。我设置单元测试的原因是看我是否可以通过重新构造Predict()、predictrms()、contrast()和summary.rms()来理解一些代码-它们都有自己的置信区间计算。在我看来,这似乎是个坏主意,尤其是因为Predict()似乎是唯一正确处理自举估计的方法(coef.reps=TRUE)。
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")
library(testthat)
test_dir("inst/tests")
set.seed(10)
n <- 11
ds <- data.frame(
  y = rnorm(n),
  x1 = factor(sample(c("a", "aa", "aaa"), size = n, replace = TRUE)))

suppressMessages(library(rms))
dd <<- datadist(ds)
options(datadist = "dd")

context("rms")
test_that("test", {
  fit <- ols(y ~ x1, data=ds)
  s <- summary(fit)
  expect_true(inherits(s, "summary.rms"))
})
context("rms")
test_that("test", {
  set.seed(10)
  n <- 11
  ds <- data.frame(
    y = rnorm(n),
    x1 = factor(sample(c("a", "aa", "aaa"), size = n, replace = TRUE)))

  suppressMessages(library(rms))
  dd <<- datadist(ds)
  options(datadist = "dd")

  fit <- ols(y ~ x1, data=ds)
  s <- summary(fit)
  expect_true(inherits(s, "summary.rms"))
})
env <- globalenv() # Grab the global environment
env$dd <- datadist(ds) # Assign the datadist to it