我偶然发现了一个问题:
temp.fun <- function() {}
as.character(temp.fun)
Run Code Online (Sandbox Code Playgroud)
产生错误.我说,为什么不可能将一个函数"转换"为一个字符.问题是,要添加到函数中的属性是什么,以便该方法as.character返回自己定义的字符串?
非常感谢!
deparse 可以帮助:
> deparse( temp.fun )
[1] "function () " "{" "}"
Run Code Online (Sandbox Code Playgroud)
进一步了解评论的细节,你可以做的是创建一个派生function并传递它而不是函数的类.
setClass( "myFunction", contains = "function" )
setMethod( "as.character", "myFunction", function(x, ...){
deparse( unclass( x ) )
} )
Run Code Online (Sandbox Code Playgroud)
因此,当您将函数传递给第三方软件包时,您传递的是myFunction:
f <- new( "myFunction", function(){} )
as.character(f)
# [1] "function () " "{" "}"
Run Code Online (Sandbox Code Playgroud)