eval(parse())中出错-r找不到参数输入

eval(parse())中出错-r找不到参数输入,r,debugging,eval,gbm,R,Debugging,Eval,Gbm,我对R非常陌生,这是我第一次遇到eval()函数。因此,我尝试使用以下包中的med和boot.med函数:。我用它来进行调解分析med和boot.med采用线性模型和数据帧等模型,这些模型指定了中介体和预测因子,然后估计每个中介体的中介效果 该软件包的作者提供了灵活的选项,可以指定自己的custom.function。从med的源代码可以看出,自定义.function被传递给eval()。因此,我尝试插入gbmt函数作为自定义函数。然而,R不断给我错误信息:在wrapup期间出错:必须提供用于预

我对R非常陌生,这是我第一次遇到eval()函数。因此,我尝试使用以下包中的
med
boot.med
函数:。我用它来进行调解分析
med
boot.med
采用线性模型和数据帧等模型,这些模型指定了中介体和预测因子,然后估计每个中介体的中介效果

该软件包的作者提供了灵活的选项,可以指定自己的
custom.function
。从
med
的源代码可以看出,
自定义.function
被传递给eval()。因此,我尝试插入
gbmt
函数作为自定义函数。然而,R不断给我错误信息:在wrapup期间出错:必须提供用于预测的树的数量。我已经在线搜索了几天,并尝试了多种方法指定树的数量参数
n.trees
,但没有任何效果(我相信其他人也提出了类似的问题:,)

以下代码是
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))
有人知道如何在上述代码的某个地方添加关于树数的参数吗

非常感谢

更新:要复制示例代码,请安装
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)')

库(“mma”)
数据(“权重行为”)##二进制x#二进制y
x=重量_行为[,c(2,4:14)]
pred=重量和行为[3]
y=重量和行为[15]

data.bin是否在调用
med
函数的作用域中定义了
gbmt
?是否所有的
dist
start\u-stop
?有一个完整的、最少的例子来重现这个问题会有所帮助。(除此之外,在分析问题和发布相关信息方面做得很好。)事实上,我不认为您可以在
自定义函数中使用自定义对象。
med
不支持此功能,因为此函数的实现方式(顺便说一句,这很糟糕)。@Konrad Rudolphv:非常感谢您的及时回复
gbmt
未在调用
med
函数的作用域中定义。它是来自另一个R包的函数。但是,正如您从
mma
软件包作者给出的示例代码中所看到的,
glm
函数也是外部的,在
med
函数中未定义,但是示例代码是有效的…
glm
是“stats”软件包中的一个函数,它总是附加在一起。确保已加载并附加了
gbm3
软件包。也就是说,请注意我的第二条评论:
med
不支持在
custom.function
中使用其他对象。事实上,仅仅通过阅读您发布的代码,就连其他包也找不到了。另外请注意,由于未能修复错误,该软件包最近已从CRAN中删除。@Konrad Rudolph:这非常有用!我认为
mma
软件包的所有用户都应该收到您的信息。希望
自定义.功能
在未来得到进一步发展。
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, 
                                       )') 

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)')