测试函数的参数是否在R中设置
我有一个函数测试函数的参数是否在R中设置,r,function,variables,variable-assignment,isset,R,Function,Variables,Variable Assignment,Isset,我有一个函数f,它接受两个参数(p1和p2): 如果参数p2未向函数传递任何值,则应使用p1^2的值。但是,如果给定值或未给定值,我如何在函数中找到。问题是,如果没有值,则变量p2未初始化。因此,我无法测试p2是否为NULL f <- function(p1, p2) { if(is.null(p2)) { p2=p1^2 } p1-p2 } f您可以使用函数missing() f <- function(p1, p2) { if(m
f
,它接受两个参数(p1
和p2
):
如果参数p2
未向函数传递任何值,则应使用p1
^2的值。但是,如果给定值或未给定值,我如何在函数中找到。问题是,如果没有值,则变量p2
未初始化。因此,我无法测试p2
是否为NULL
f <- function(p1, p2) {
if(is.null(p2)) {
p2=p1^2
}
p1-p2
}
f您可以使用函数missing()
f <- function(p1, p2) {
if(missing(p2)) {
p2=p1^2
}
p1-p2
}
f我认为“?missing”应该可以做到这一点。在这种情况下,您也可以使用以下内容:
f <- function(p1, p2 = p1 ^ 2) {
p1-p2
}
f+1表示NULL
默认选项。Re:您添加的编辑,如何通过包装函数传递missing
'ness?@JoshO'Brien传递missing
-ness-on很复杂,但可能。这就是为什么在这种情况下NULL
要容易得多。。。。所以一个单独的问题可能需要通过missing
-ness on.@JoshO'Brien如果(missing(p2))f(p1)或者f(p1,p2)
,那么这个问题必须是。或者你可以用点参数传递参数。谢谢。FWIW,如果这两个函数都有形式参数p1
和p2
,我看不出如何处理dots。另一种选择是在f.wrapper()
的主体中使用以下内容:{cl
f <- function(p1, p2 = p1 ^ 2) {
p1-p2
}