环境创建了解决问题的函数。我尝试过的一种方法是:
bf_str = print(bf)
save(bf_str,file="MyBestFunction.R"))bf就是最好的拟合函数。我也是这样试过的:
save(bf,file="MyBestFunction.R"))输出的文件非常奇怪。就是一群疯狂的角色
发布于 2012-08-16 20:09:53
根据我对您问题的理解,您希望获得函数的文本表示并将其保存到文件中。为此,您可以使用sink函数转换R控制台的输出。
sink(file="MyBestFunction.R")
bf_str
sink()然后,您可以source该文件或打开它使用R或其他程序通过您的操作系统。
编辑:
要在文件末尾追加注释,可以执行以下操作:
theScore <- .876
sink(file = "MyBestFunction.R", append = TRUE)
cat("# This was a great function with a score of", theScore, "\r\n")
sink()根据您的设置,您可能需要更改\r\n以反映适当的行尾字符。这至少应该可以在DOS/Windows上运行。
发布于 2012-08-16 20:29:04
您可以使用dump来实现这一点。它将保存分配和定义,以便您稍后可以source它。
R> f <- function(x) x*2
R> dump("f")
R> rm(f)
R> source("dumpdata.R")
R> f
function(x) x*2更新以在另一个答案的注释中响应OP的附加请求:
您可以向您的函数添加属性,以存储您想要的任何内容。您可以添加一个score属性:
R> f <- function(x) x*2
R> attr(f, 'score') <- 0.876
R> dump("f")
R> rm(f)
R> source("dumpdata.R")
R> f
function(x) x*2
attr(,"score")
[1] 0.876
R> readLines("dumpdata.R")
[1] "f <-"
[2] "structure(function(x) x*2, score = 0.876)"发布于 2012-08-17 14:42:04
虽然这个问题已经得到了回答,但我应该提一下dump有一些缺陷,我想你最好通过save以二进制格式保存你的函数。
特别是,dump只保存函数代码本身,而不保存任何相关的环境。这在这里可能不是问题,但可能会在某一时刻咬你。例如,假设我们有
e <- new.env()
e$x <- 10
f <- function(y) y + x
environment(f) <- e那么dump("f")将只保存f的函数定义,而不保存它的环境。如果您随后对生成的文件执行source操作,f将不再正常工作。如果您使用save和load,则不会发生这种情况。
https://stackoverflow.com/questions/11986574
复制相似问题