as.character在函数上的用法

时间:2012-11-22 17:52:15

标签: r function

我偶然发现了一个问题:

temp.fun <- function() {}
as.character(temp.fun)

产生错误。我说,为什么不可能将一个函数“转换”为一个字符。 问题是,要添加到函数中的属性是什么,以便方法as.character返回由我自己定义的字符串?

非常感谢!

1 个答案:

答案 0 :(得分:7)

deparse可以提供帮助:

> deparse( temp.fun )
[1] "function () " "{"            "}"

进一步了解评论的详细信息,您可以做的是创建一个派生function的类并传递此代码而不是函数。

setClass( "myFunction", contains = "function" )
setMethod( "as.character", "myFunction", function(x, ...){
    deparse( unclass( x ) ) 
} )

因此,当您将功能传递给第三方软件包时,您会传递myFunction代替:

f <- new( "myFunction", function(){} )
as.character(f)
# [1] "function () " "{"            "}"