R Shiny unsource 源文件

R Shiny unsource sourced files

R / Shiny 的强大功能之一是可以在 R 代码中 "source" 另一个 R 文件 .我动态地这样做,所以最后有很多源文件。到目前为止一切顺利。

FileToSource <- paste("Folder/",df$filename,".R", sep = "")
source(FileToSource, chdir=T)

unsource(......) ???

但有时我想清理一下。我可以删除变量等,但是我可以 "unsource" 以前的 "sourced" 文件吗?

我一直在寻找一种方法的代码,但直到现在都没有运气。

你可能想知道 它是否对 "unsource" 文件有必要,但我喜欢偶尔 清理 并且这可以是其中的一部分。 冲突代码等的可能性较小...

建议?

提前致谢,如果我找到办法我也会post在这里

您可能要考虑使用本地环境。假设有一个名为 ~/x.R 的文件,其中包含一行 bb <- 10。您可以创建一个新环境

 envir <- new.env()

然后通过

在该环境中获取文件
 source('~/x.R',local=envir)

然后,您将能够获得 bb 的值作为 envir$bb,并且您不会在全局环境中看到 bb。之后,您可以通过设置 envir <- NULL 或类似的设置来删除环境 envir

太好了,我做了这个测试以发现 if/how 它有效:

A.R:

xx <- function(){
 print("A print")
}
yy <- 11

B.R:

xx <- function(){
 print("B print")
}
yy <- 99

Main.R:

(删除 # 会出现错误:尝试应用非函数)

A <- new.env()
B <- new.env()
source("A.R", local=A)
source("B.R", local=B)
A$xx()
print(A$yy)
B$xx()
print(B$yy)
A <- NULL
#A$xx()
#print(A$yy)
B$xx()
print(B$yy)
B <- NULL
#A$xx()
#print(A$yy)
#B$xx()
#print(B$yy)

所以最后Main.R就是

空旷干净整洁

<< 正是我想要的! >>

感谢@MARAT