如何将参数传递给插入符号摘要函数

时间:2017-06-17 09:02:48

标签: r r-caret

如何将参数传递给插入符号摘要函数?

例如,插入符的twoClassSummary函数具有以下签名: twoClassSummary(data,lev = NULL,model = NULL)

参数lev具体说明了我感兴趣的因子级别。 现在我想告诉我们我对因子级别“false”的摘要感兴趣。像

这样的东西
  trainControl(summary=twoClassSummary(lev="false")) 

不起作用。如何将参数传递给摘要函数?谢谢!

1 个答案:

答案 0 :(得分:4)

我认为目前不可能以直截了当的方式执行此操作,因为训练(...)的其他参数不会传递给twoClassSummary()。你可以使用技巧使它工作,你的想法非常接近。创建一个自定义函数,将值从插入符号传递给汇总函数,但在这样做时可以使用它们或替换它们。

trainControl(
    summaryFunction = function(...) empTwoClassSummary(..., lev = c("your_other_class","false"))

您可以执行相同操作以将其他参数传递到自定义摘要功能,例如:

trainControl(
    summaryFunction = function(...) customTwoClassSummary(..., weights = c(0.1, 0.2), orgData = my_data)

与问题无关:在您的示例中,请确保您希望成为目标级别的级别是lev中的第二个向量元素,因为在这些行中,默认情况下,twoClassSummary()会假定这一点:

lvls <- levels(data$obs)
data$y = as.numeric(data$obs == lev[2])