我想将函数转换为字符串。我不能直接将类函数转换为类字符,因此我使用function
到list
到character
逻辑。但是,list
会从函数中删除注释。
示例:
foo <- function() {
1 + 1
}
# Can't use as.character(foo), thus:
as.character(list(foo))
"function () \n{\n 1 + 1\n}"
但是,如果函数包含注释,那么它将被删除
bar <- function() {
# sum
1 + 1
}
as.character(list(bar))
"function () \n{\n 1 + 1\n}"
问题:为什么列表会从函数中删除注释以及如何保存它们?或者将函数转换为字符串的更好方法是什么?
修改
MrFlick建议使用capture.output
用于交互式R会话。但是,如果使用code.R
:
bar <- function() {
# sum
1 + 1
}
# collectMetaData()
print(paste0(capture.output(print(bar)), collapse="\n"))
尝试使用Rscript code.R
运行它,我的输出仍为:"function () \n{\n 1 + 1\n}"
答案 0 :(得分:3)
我不知道,你为什么要这样做。这看起来像是一个xy问题。无论如何,你似乎想要解析函数:
bar <- function() {
# sum
1 + 1
}
paste(deparse(bar, control = "useSource"), collapse = "\n")
#[1] "function() {\n # sum\n 1 + 1\n}"