首页 > 解决方案 > drc 包的 mselect 函数在函数内部不起作用

问题描述

我想使用 drc 包中的 mselec 函数来选择剂量反应数据集的最佳模型。但是,如果在函数中使用 mselect,则它不起作用。

以下代码有效:

library(drc)
ryegrass.m1 <- drm(rootl~conc, data = ryegrass, fct = LL.4())

mselect(ryegrass.m1,list(LL.5(), LN.4(), W1.4(), W2.4()))

但不是这个:

best.fit=function(data){  
model1=drm(rootl~conc, data=data, fct=LL.4())
M1=drc::mselect(model1, list(LL.5(), LN.4(), W1.4(), W2.4()))
return(M1)
}

best.fit(ryegrass)

我认为这个问题与 R 中的环境有关,但我不知道如何解决它。有人可以帮助我吗?

标签: environmentmodel-fittingdrc

解决方案


我设法解决这样的问题:

best.fit=function(data){
  mf <- match.call(expand.dots = FALSE)
  m <- match(c("data"), names(mf), 0L)
  data.name=as.character(mf[m])

  model1=eval(parse(text=paste0('drm(rootl~conc, data=',data.name, ',fct=LL.4())')))
  M1=drc::mselect(model1, list(LL.5(), LN.4(), W1.4(), W2.4()))
  return(M1)
}

best.fit(ryegrass)

应该有更好的方法来做到这一点,但至少它现在对我有用。


推荐阅读