R 如何编写函数';将代码转换为字符串?

R 如何编写函数';将代码转换为字符串?,r,R,假设我有: test <- function(x) x + 1 test function(x) x + 1 test您正在寻找capture.output > z=paste(capture.output(test), collapse = " ") > z [1] "function(x) x + 1" 我们可以使用deparse paste(deparse(test), collapse = " ") #[1] "function (x) x + 1" 此外

假设我有:

test <- function(x) x + 1
test
function(x)
  x + 1

test您正在寻找
capture.output

> z=paste(capture.output(test), collapse = " ")
> z
[1] "function(x) x + 1"

我们可以使用
deparse

paste(deparse(test), collapse = " ")
#[1] "function (x)  x + 1"

此外,如果需要提取函数的组件,请使用
body

body(test)
或者将其拆分为
列表

as.list(test)
另一种可能性

dput(test,textConnection("test_txt",open="w"))

或者与
dump()

相同,您是否需要
“x+1”
我想要完整的字符串:“function(x)x+1”是在您声明
测试之后出现的。类似于
deparse(test)
的东西,这是可行的,但希望这是最后的解决方案。除了capture.output,还有其他更好的吗?没有其他函数只转储函数的定义?来自其他编程语言(.NET、Java等),库的创建者总是喜欢更改其toString()方法,以便它更简洁或更美观地打印对象,等。在我所熟悉的大多数语言中,让您的生产应用程序及其声誉取决于您无法访问的第三方开发人员如何在命令行上打印对象,这通常不是一种公认的做法。R对我来说是新的,所以可能这条规则在这一条上被打破了。@Denis,在R中,有时复杂的对象(或者更具体地说,它们的类)会有
print.yourclass
方法,但对于独立的函数,我从未见过这种情况。