作为我一直在从事的项目的一部分,我希望允许用户返回嵌套对象结构的各种输入的摘要。部分对象用作容器或格式化程序,而其余部分则用于解析其他输入。
基本上,摘要将格式化“名称”、“函数类型/名称”和其他一些描述符。但我在第二部分“函数类型/名称”上有些意外。
如何确定是一个命名函数还是类似 lambda(未命名)的函数作为参数提供给函数?
我解决问题的一些想法是替换输入(假设它没有丢失)并检查输入是否name
是call
f <- function(x)
substitute(x)
class(f(sum))
[1] "name"
class(f(function(x) x**2))
[1] "call"
但这是不完整的,因为一个函数call
仍然可以被认为是一个命名的
f(sum(x))
[1] "call"
在最简单的格式中,我将搜索要返回的函数"named function"
并"unnamed function"
搜索已加载的命名空间。例如。sum
andsum(x)
是一个命名函数,whilefunction(x) x**2
是一个未命名函数。