6

我偶然发现了一个问题:

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

产生错误。我理解,为什么不能将函数“转换”为字符。问题是,要向函数添加哪些属性,以便该方法as.character返回我自己定义的字符串?

非常感谢!

4

1 回答 1

7

deparse能够帮助:

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

进一步了解您的评论细节,您可以做的是创建一个派生function并传递 this 而不是函数的类。

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

因此,当您将函数传递给第三方包时,您传递的是 a myFunction

f <- new( "myFunction", function(){} )
as.character(f)
# [1] "function () " "{"            "}"
于 2012-11-22T17:59:05.080 回答