r - eval(parse()) 中的错误 - r 无法找到参数输入
问题描述
我对 R 很陌生,这是我第一次遇到 eval() 函数。所以我正在尝试使用以下包中的med
and函数: mma。我正在使用它进行中介分析。并采用线性模型等模型,以及指定中介和预测因子的数据框,然后估计每个中介的中介效果。boot.med
med
boot.med
包的作者提供了指定自己的灵活选项custom.function
。从 的源码med
可以看出,custom.function
是传给了eval()。所以我尝试将该gbmt
函数作为自定义函数插入。但是,R 一直给我错误信息:总结期间出错:必须提供要用于预测的树数。我已经在网上搜索了几天,并尝试了多种指定树参数数量的方法n.trees
,但没有任何效果(我相信其他人也提出了类似的问题:post 1,post 2)。
以下代码是med
函数源代码的一部分:
cf1 = gsub("responseY", "y[,j]", custom.function[j])
cf1 = gsub("dataset123", "x2", cf1)
cf1 = gsub("weights123", "w", cf1)
full.model[[j]] <- eval(parse(text = cf1))
作者在包文档中给出的一个自定义函数示例如下:
temp1<-med(data=data.bin,n=2,custom.function = 'glm(responseY~.,data=dataset123,family="quasibinomial",
weights=weights123)')
这里glm
是自定义函数。此示例代码有效,您可以轻松复制它(如果您已mma
安装并加载)。但是,当我尝试gbmt
在生存对象上使用该函数时,出现错误,这是我的代码的样子:
temp1 <- med(data = data.surv,n=2,type = "link",
custom.function = 'gbmt(responseY ~.,
data = dataset123,
distribution = dist,
train_params = start_stop,
cv_folds=10,
keep_gbm_data = TRUE,
)')
任何人都知道如何n.trees
在上述代码中的某处添加关于树数的参数?
提前谢谢了!
更新:为了复制示例代码,请安装mma
并尝试以下操作:
library("mma")
data("weight_behavior") ##binary x #binary y
x=weight_behavior[,c(2,4:14)]
pred=weight_behavior[,3]
y=weight_behavior[,15]
data.bin<-data.org(x,y,pred=pred,contmed=c(7:9,11:12),binmed=c(6,10), binref=c(1,1),catmed=5,catref=1,predref="M",alpha=0.4,alpha2=0.4)
temp1<-med(data=data.bin,n=2) #or use self-defined final function
temp1<-med(data=data.bin,n=2, custom.function = 'glm(responseY~.,data=dataset123,family="quasibinomial",
weights=weights123)')
我将 custom.function 更改为gbmt
并将生存对象用作 responseY 并发生错误。当我在gbmt
函数外的数据上使用该函数时med
,没有错误。
解决方案
推荐阅读
- javascript - Django试图将我的数组保存到模型中
- yii - 使用复合字段创建关系 hasMany()
- javascript - Javascript高阶函数,调用带有n个参数的函数
- c++ - 使用类类型中的字段定义类
- c++ - C++17 std::optional 错误:“auto”之前的预期主表达式
- javascript - TypeScript 中的迄今为止的字符串
- python - 无法将 current_url 与 Python 和 Selenium 中的列表进行比较
- python - 在 Pandas 中计算独特的广告展示次数
- plotly - 来自 Plotly 的 Dash:拆分图例并向右移动
- algorithm - 在动态世界中查询的 KDtree 类似数据结构是什么?