gpt4 book ai didi

r - 使用省略号将参数传递给函数,并为某些不存在的参数设置默认值

转载 作者:行者123 更新时间:2023-12-01 12:37:55 27 4
gpt4 key购买 nike

我有一个主函数,它将参数传递给另一个使用 rpart 生成模型的函数。我希望有可能使用省略号从主函数中指定 rpart.control。如果没有定义 cpminbucket,那么我想对这两个参数使用我的默认值。

到目前为止,我没有成功 - 请参阅下面的草稿。目前该函数正在提示找不到 cp。我明白为什么,但无法弄清楚,如果用户没有提供自己的控件,如何应用默认值。

require(rpart)

a <- function(df, ...) {
b(df, ...)
}

b <- function(df, ...) {
if (is.null(cp)) cp <- 0.001
if (is.null(minbucket)) minbucket = nrow(df) / 20
rcontrol <- rpart.control(cp = cp, minbucket = minbucket, ...)
rcontrol
}


a(iris) # no controls set my defaults for cp and minbucket
a(iris, cp = 0.123) # set cp, use my default for minbucket
a(iris, cp = 0.123, minbucket = 100) # set cp, and minbucket
a(iris, maxcompete = 3) # use my defaults for cp and minbucket, but pass maxcompete

最佳答案

这是对您的函数的一个小修正:首先应用 list(...)

b <- function(df, ...) {
l <- list(...)
if (is.null(l$cp)) l$cp <- 1
if (is.null(l$minbucket)) l$minbucket <- 2
print_all(l$cp, l$minbucket, ...)
}

print_all <- function(...) {
print(list(...))
}

运行您的示例以确保设置了所有默认值。

关于r - 使用省略号将参数传递给函数,并为某些不存在的参数设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27885242/

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