Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.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 - Fatal编程技术网

R函数检查另一个函数中的参数数?

R函数检查另一个函数中的参数数?,r,function,R,Function,是否有一个内置的R函数,或一种编写R函数的方法,可以检查另一个函数接受多少输入,并列出可选参数的名称 让我们调用所需的函数f,然后调用以下命令: f(dnorm) 应该输出 4 及 因为有4个参数与“dnorm”关联,还有3个可选参数:mean、sd、log 或者这是不可能的?任何洞察都将不胜感激 您可以尝试: length(formals(dnorm)) # [1] 4 names(Filter(function(x) !is.symbol(x) || nchar(as.character

是否有一个内置的R函数,或一种编写R函数的方法,可以检查另一个函数接受多少输入,并列出可选参数的名称

让我们调用所需的函数f,然后调用以下命令:

f(dnorm)
应该输出

4

因为有4个参数与“dnorm”关联,还有3个可选参数:mean、sd、log

或者这是不可能的?任何洞察都将不胜感激

您可以尝试:

length(formals(dnorm))
# [1] 4
names(Filter(function(x) !is.symbol(x) || nchar(as.character(x)), formals(dnorm)))
# [1] "mean" "sd"   "log" 

技术上有两个功能,但可以完成任务。对于第二个问题,如果默认参数很复杂,您可能需要多做一些调整。

Wow,这正是我想要的!我还要再等9分钟才能接受……:)@后凸,很高兴这有帮助。请记住我关于复杂默认参数的警告。例如,如果默认参数是具有多个值的向量,则会收到警告。要知道的关键是,非默认参数是零长度符号(因此,
nchar(as.character(x))
会为这些参数返回0)。@kyphos,另外,如果您要在某个地方嵌入此参数,您可能应该执行
is.symbol(x)
避免默认参数实际为“”的可能性。谢谢,请记住这一点,现在我打算将其与“functional”包中的“Curry”函数一起使用,以自动生成一些函数。@kyphos,太好了。我希望
功能性
是base的一部分。
length(formals(dnorm))
# [1] 4
names(Filter(function(x) !is.symbol(x) || nchar(as.character(x)), formals(dnorm)))
# [1] "mean" "sd"   "log"