我有以下功能,我想在其上添加一个包含元数据的“doc”变量:
func <- function(x)
{
x
}
attr(func, "doc") = "some documentation"
但为了清楚起见,我想在函数中添加一些元数据:
func <- function(x)
{
doc = "some documentation in the function"
x
}
然而,当我尝试:
env = environment(func)
> env$doc
NULL
> get("doc", env)
我没有检索到我需要的信息。我当然错过了一个重点!
答案 0 :(得分:1)
您可以使用闭包:
docAdder <- function(fun, doc) {
newFun <- function(...) {
vars <- as.list(match.call())
if(length(vars)<2) {
return(doc)
}
return(fun(...))
}
newFun
}
如果没有提供参数,此函数只会使原始函数返回“doc”。
然后:
rev2 <- docAdder(rev, "this function reverses a vector")
rev2(c(1,2,3,4,5))
[1] 5 4 3 2 1
rev2()
[1] "this function reverses a vector
然而,在R中执行此操作的一般方法是使用像 Roman 这样的包和文档。