gpt4 book ai didi

r - 是否可以导出 R 函数?

转载 作者:行者123 更新时间:2023-12-05 08:36:52 25 4
gpt4 key购买 nike

假设我们有一个函数,在很长的过程之后,返回另一个函数作为输出。

为了便于说明,画出以下函数:

f = function() {
starting_time = Sys.time()
a = 0
while (difftime(Sys.time(), starting_time, units = "days") < 1) {
a = a + 1
}
g = function(x) {
a*x
}
return(g)
}

在我们的示例中,函数 f 将运行一整天,然后返回函数 g。我们可以通过执行 my_function = f() 将函数 g 分配给一个变量。

问题是我希望 f 只运行一次,以便检索 g,然后导出 g,这样我就可以共享它而无需再次运行 f。

最好,如果可能的话,我想要一个不涉及保存工作区的解决方案。我想知道,就像 write.csv 允许我们导出数据框而无需保存工作区一样,是否有一个类似的函数来导出函数。

最佳答案

您可以使用 saveRDS

f = function(x, ...) {
mean(x, ...)
}

saveRDS(f, file='f.rds')
rm(f)

f = readRDS('f.rds')
f(1:3)
# [1] 2

如果你想保存函数的文本版本(这样文件是人类可读的),你可以使用 dput 代替,尽管从文件中恢复函数需要 eval(解析))

dput(f, file='f.txt')
g = eval(parse(text = readLines('f.txt')))
g(1:3)
# [1] 2

关于r - 是否可以导出 R 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67359302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com