首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >coeftest()给出了drc类对象的错误

coeftest()给出了drc类对象的错误
EN

Stack Overflow用户
提问于 2021-01-13 10:25:27
回答 2查看 652关注 0票数 1

我试图复制一个补充的例子2连续的反应:一个剂量-反应曲线来自刚果民主共和国的一揽子

在尝试运行coeftest(ryegrass.LL.4, vcov = sandwich)时,我会得到以下错误:

UseMethod中的错误(“estfun”):对于类"drc“中的对象,没有适用的'estfun‘方法。

我试图对错误进行谷歌搜索,但没有成功,而是使用vcov.而不是vcov (因为vcov )。在R中自动表示,但文章使用vcov),并且仍然得到相同的错误。

有什么办法解决这个问题吗?

会议信息:

代码语言:javascript
复制
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 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-13 11:48:14

@jay.sf是对的,estfun是来自sandwich包的函数。它被定义为一个泛型函数。只需键入estfun并按enter键,您就会看到

代码语言:javascript
复制
function (x, ...) 
{
  UseMethod("estfun")
}

这意味着,如果它看到"drc"类的对象( ryegrass.LL.4是),它会搜索一个名为estfun.drc的函数来应用。如果它是"foo"类的对象,它就会试图找到estfun.foo。有关更多细节,请参见威翰书中关于S3类的一章

实际上,drc包甚至为来自sandwichbread泛型提供了一个方法estfun.drc和配套的bread.drc方法。但是,由于方法没有在drc包中正式注册,所以相应的泛型函数没有找到这一点。在较早版本的R中,这曾经起作用,但现在已被禁用。仅根据命名约定向estfun.drc分派只适用于全局环境中的函数,而不是包中的函数。因此,一个快速而肮脏的解决方案是在您的全局环境中创建函数的副本:

代码语言:javascript
复制
estfun.drc <- drc::estfun.drc
bread.drc <- drc::bread.drc

更好的方法是将函数注册为S3方法,而不是复制它们:

代码语言:javascript
复制
registerS3method("estfun", "drc", drc::estfun.drc)
registerS3method("bread", "drc", drc::bread.drc)

当然,如果drc在包中这样做会更好,这样您作为用户就不必这样做了。也许作者愿意相应地更新这个包。

票数 3
EN

Stack Overflow用户

发布于 2022-04-15 16:08:29

代码语言:javascript
复制
coeftest(model1, vcov.dcr=sandwich)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65699987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档