Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
测试函数的参数是否在R中设置_R_Function_Variables_Variable Assignment_Isset - Fatal编程技术网

测试函数的参数是否在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
}