【问题标题】:Why does formals function return NULL on functions defined with arguments?为什么形式函数在使用参数定义的函数上返回 NULL?
【发布时间】:2019-09-29 11:49:52
【问题描述】:

从基础 R 开始,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)

$all.names
[1] FALSE

$pattern


$sorted
[1] TRUE


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

我希望formals(sum) 提供长度为2 的列表结果,而不是NULL

【问题讨论】:

  • 来自?formals“只有_closures_有形式,而不是原始函数。......返回......对于非函数或原始函数为NULL”。许多低级函数(包括您在此控制台输出中显示的sum)是.Primitive 函数,formals 将无法检查。

标签: r


【解决方案1】:

你选择函数的问题从它的主体就很明显了。原始函数有些不同,它们的参数列表可能有一些名称,但它们的参数传递给 C 代码,formals()body()environment() 都返回 NULL。改用apply 试试吧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 2020-07-15
    • 2020-03-28
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多