coeftest() 给出错误与 drc class object
coeftest() gives error with drc class object
我正在尝试重现补充示例 2 连续响应:一个 dose-response 曲线 from the drc package.
尝试运行时
coeftest(ryegrass.LL.4, vcov = sandwich)
,我收到以下错误:
Error in UseMethod("estfun") :
no applicable method for 'estfun' applied to an object of class "drc".
我尝试 google 错误但没有成功,并使用 vcov.
而不是 vcov
(因为 vcov。在 R 中自动建议,但文章使用 vcov)和仍然有同样的错误。
有什么解决办法吗?
Session 信息:
R version 4.0.3 (2020-10-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19041)
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] lmtest_0.9-38 zoo_1.8-8 sandwich_3.0-0 drc_3.0-1 MASS_7.3-53
loaded via a namespace (and not attached):
[1] zip_2.1.1 Rcpp_1.0.5 pillar_1.4.7 compiler_4.0.3 cellranger_1.1.0
[6] forcats_0.5.0 tools_4.0.3 lifecycle_0.2.0 tibble_3.0.4 lattice_0.20-41
[11] pkgconfig_2.0.3 rlang_0.4.8 Matrix_1.2-18 openxlsx_4.2.3 rstudioapi_0.13
[16] curl_4.3 mvtnorm_1.1-1 haven_2.3.1 xfun_0.18 rio_0.5.16
[21] vctrs_0.3.5 gtools_3.8.2 hms_0.5.3 grid_4.0.3 data.table_1.13.4
[26] R6_2.5.0 plotrix_3.7-8 survival_3.2-7 readxl_1.3.1 foreign_0.8-80
[31] multcomp_1.4-15 TH.data_1.0-10 carData_3.0-4 car_3.0-10 magrittr_1.5
[36] scales_1.1.1 codetools_0.2-16 splines_4.0.3 ellipsis_0.3.1 abind_1.4-5
[41] colorspace_2.0-0 tinytex_0.26 stringi_1.5.3 munsell_0.5.0 crayon_1.3.4
@jay.sf 是对的,estfun
是 sandwich
包中的一个函数。并且它被定义为一个泛型函数。只需输入 estfun
并按回车键,您就会看到
function (x, ...)
{
UseMethod("estfun")
}
这意味着如果它看到 class "drc"
的对象(ryegrass.LL.4
是),它会搜索一个名为 estfun.drc
的函数来应用。如果它是 class "foo"
的对象,它会尝试找到 estfun.foo
。有关详细信息,请参阅 a chapter on S3 classes in H. Wickham's book。
实际上,drc
包甚至提供了一种方法 estfun.drc
- 以及来自 sandwich
的 bread
泛型的配套 bread.drc
方法。但是,由于这些方法没有正式注册到 drc
包中,因此不会被相应的泛型函数找到。在旧版本的 R 中,这曾经有效,但现在已被禁用。仅基于命名约定对 estfun.drc
的调度仅适用于全局环境中的函数,但不适用于包中的函数。因此,一个快速而肮脏的解决方案是在全局环境中创建函数的副本:
estfun.drc <- drc::estfun.drc
bread.drc <- drc::bread.drc
更好的方法是将函数注册为 S3 方法,而不是复制它们:
registerS3method("estfun", "drc", drc::estfun.drc)
registerS3method("bread", "drc", drc::bread.drc)
当然,如果drc
在包中这样做就更好了,这样作为用户的您就不必这样做了。也许作者会愿意相应地更新包。
coeftest(model1, vcov.dcr=sandwich)
我正在尝试重现补充示例 2 连续响应:一个 dose-response 曲线 from the drc package.
尝试运行时
coeftest(ryegrass.LL.4, vcov = sandwich)
,我收到以下错误:
Error in UseMethod("estfun") : no applicable method for 'estfun' applied to an object of class "drc".
我尝试 google 错误但没有成功,并使用 vcov.
而不是 vcov
(因为 vcov。在 R 中自动建议,但文章使用 vcov)和仍然有同样的错误。
有什么解决办法吗?
Session 信息:
R version 4.0.3 (2020-10-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19041)
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] lmtest_0.9-38 zoo_1.8-8 sandwich_3.0-0 drc_3.0-1 MASS_7.3-53
loaded via a namespace (and not attached):
[1] zip_2.1.1 Rcpp_1.0.5 pillar_1.4.7 compiler_4.0.3 cellranger_1.1.0
[6] forcats_0.5.0 tools_4.0.3 lifecycle_0.2.0 tibble_3.0.4 lattice_0.20-41
[11] pkgconfig_2.0.3 rlang_0.4.8 Matrix_1.2-18 openxlsx_4.2.3 rstudioapi_0.13
[16] curl_4.3 mvtnorm_1.1-1 haven_2.3.1 xfun_0.18 rio_0.5.16
[21] vctrs_0.3.5 gtools_3.8.2 hms_0.5.3 grid_4.0.3 data.table_1.13.4
[26] R6_2.5.0 plotrix_3.7-8 survival_3.2-7 readxl_1.3.1 foreign_0.8-80
[31] multcomp_1.4-15 TH.data_1.0-10 carData_3.0-4 car_3.0-10 magrittr_1.5
[36] scales_1.1.1 codetools_0.2-16 splines_4.0.3 ellipsis_0.3.1 abind_1.4-5
[41] colorspace_2.0-0 tinytex_0.26 stringi_1.5.3 munsell_0.5.0 crayon_1.3.4
@jay.sf 是对的,estfun
是 sandwich
包中的一个函数。并且它被定义为一个泛型函数。只需输入 estfun
并按回车键,您就会看到
function (x, ...)
{
UseMethod("estfun")
}
这意味着如果它看到 class "drc"
的对象(ryegrass.LL.4
是),它会搜索一个名为 estfun.drc
的函数来应用。如果它是 class "foo"
的对象,它会尝试找到 estfun.foo
。有关详细信息,请参阅 a chapter on S3 classes in H. Wickham's book。
实际上,drc
包甚至提供了一种方法 estfun.drc
- 以及来自 sandwich
的 bread
泛型的配套 bread.drc
方法。但是,由于这些方法没有正式注册到 drc
包中,因此不会被相应的泛型函数找到。在旧版本的 R 中,这曾经有效,但现在已被禁用。仅基于命名约定对 estfun.drc
的调度仅适用于全局环境中的函数,但不适用于包中的函数。因此,一个快速而肮脏的解决方案是在全局环境中创建函数的副本:
estfun.drc <- drc::estfun.drc
bread.drc <- drc::bread.drc
更好的方法是将函数注册为 S3 方法,而不是复制它们:
registerS3method("estfun", "drc", drc::estfun.drc)
registerS3method("bread", "drc", drc::bread.drc)
当然,如果drc
在包中这样做就更好了,这样作为用户的您就不必这样做了。也许作者会愿意相应地更新包。
coeftest(model1, vcov.dcr=sandwich)