为什么formals函数在用参数定义的函数上返回NULL?

为什么formals函数在用参数定义的函数上返回NULL?,r,R,从baseR,formals函数应该授予访问权限并允许对形式参数进行操作。 那么,为什么在一些使用经典参数定义的函数上返回NULL > ls function (name, pos = -1L, envir = as.environment(pos), all.names = FALSE, pattern, sorted = TRUE) { ... > formals(ls) $name $pos -1L $envir as.environment(pos) $

从baseRformals函数应该授予访问权限并允许对形式参数进行操作。 那么,为什么在一些使用经典参数定义的函数上返回NULL

> ls
function (name, pos = -1L, envir = as.environment(pos), all.names = FALSE, 
    pattern, sorted = TRUE) 
{ ...

> formals(ls)
$name


$pos
-1L

$envir
as.environment(pos)

$all.names
[1] FALSE

$pattern


$sorted
[1] TRUE


> sum
function (..., na.rm = FALSE)  .Primitive("sum")
> formals(sum)
NULL

我希望formals(sum)提供一个长度为2的列表结果,而不是NULL。函数选择的问题从它的主体上看是显而易见的。基本函数有些不同,因为它们的参数列表可能有一些名称,但它们的参数被传递给C代码和
formals()
body()
,以及
environment()
都返回
NULL
。用
apply
试试它。

你选择函数的问题从函数体上看是显而易见的。基本函数有些不同,因为它们的参数列表可能有一些名称,但它们的参数被传递给C代码和
formals()
body()
,以及
environment()
都返回
NULL
。请改为使用
apply

From:“只有_闭包u具有形式函数,而不是基元函数…对于非函数或基元返回…NULL”。许多低级函数(包括您在此控制台输出上显示的
sum
)都是
。Primitive
函数,而
formals
将无法检查。From:“只有_闭包u.具有formals,而非Primitive函数……对于非函数或Primitive函数返回…NULL”。许多低级函数(包括您在此控制台输出上显示的
sum
)都是
。基本的
函数,而
形式的
将无法检查。