gpt4 book ai didi

r - 如何区分 R 中的函数

转载 作者:行者123 更新时间:2023-12-02 08:33:59 26 4
gpt4 key购买 nike

我一直在尝试编写能够使用不同分类函数的代码。但是,参数因我使用的分类函数而异。我想要这样的东西:

classification_flow <- function(classification_function, ...) {
if (classification_function == randomForest) {
...
}
else if (classification_function == svm) {
...
}
}

当然,这行不通,因为 == 不是为函数构建的。我试过使用 strnamesattr,并查看了一些 methodsUseMethod ,但我找不到合适的方法。

谁能帮帮我?

谢谢,
杰斯

PS:在这种特殊情况下,我要做的是获取概率矩阵作为输出,类似这样的事情:

classification_flow <- function(classification_function, train, classes, ...) {
if (classification_function == randomForest) {
mat = classification_function(train, classes, type="prob")
}
else if (classification_function == svm) {
mat = classification_function(train, classes, probabilities = T)
}
return(mat)
}

如果你知道更优雅的解决方案...

最佳答案

您正在寻找替代品:

f <- function(x, FUN) {
if (substitute(FUN) == 'max') {
print('Max invoked')
}
FUN(x)
}

> f(1:4, sum)
[1] 10
> f(1:4, max)
[1] "Max invoked"
[1] 4

关于r - 如何区分 R 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23746269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com