environment - 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 中的环境有关,但我不知道如何解决它。有人可以帮助我吗?
解决方案
我设法解决这样的问题:
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)
应该有更好的方法来做到这一点,但至少它现在对我有用。
推荐阅读
- javascript - GetJSON 从 URL 到 d3.js 图表
- php - php - 如何使用变量调用静态类和函数?
- java - 如何使用外部 tomcat 在 IntelliJ IDEA IDE 上运行 Spring Boot Maven 项目
- node.js - Firestore云功能查询数据库:文档不存在
- html - 存在垂直 scollbar 时高度不是真实的 100%
- reactjs - 在 react-native 中单独更改状态
- java - 无法将字符串传递给下一个活动
- mysql - 案例 SQL 语句
- android - SQLiteDatabase.openOrCreateDatabase 不工作
- python - 将二进制代码转换为 DNA 代码