gpt4 book ai didi

r - 测试 R 中是否设置了函数的参数

转载 作者:行者123 更新时间:2023-12-03 05:54:27 24 4
gpt4 key购买 nike

我有一个函数 f,它接受两个参数(p1p2):

如果参数p2没有值传递给函数,则应使用p1^2的值。但是我怎样才能在函数中找出是否给定了值。问题是如果没有值,变量p2不会被初始化。因此我无法测试 p2 是否为 NULL

f <- function(p1, p2) {
if(is.null(p2)) {
p2=p1^2
}
p1-p2
}

是否可以以某种方式检查 p2 的值是否已传递给函数? (我找不到 isset() - 函数或类似的东西。)

最佳答案

您可以使用函数 missing() 来实现此目的。

f <- function(p1, p2) {
if(missing(p2)) {
p2=p1^2
}
p1-p2
}

或者,您可以将 p2 的值默认设置为 NULL。我有时更喜欢这种解决方案,因为它允许将参数传递给嵌套函数。

f <- function(p1, p2=NULL) {
if(is.null(p2)) {
p2=p1^2
}
p1-p2
}

f.wrapper <-function(p1,p2=NULL){
p1 <- 2*p1
f(p1,p2)
}
> f.wrapper(1)
[1] -2
> f.wrapper(1,3)
[1] -1

编辑:从技术上讲,您也可以使用 missing() 来完成此操作,但随后您必须在 f.wrapper 中包含 missing() 语句 也是如此。

关于r - 测试 R 中是否设置了函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7964830/

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