R / Shiny 的一个强大功能是R代码中“源”另一个R文件的可能性。我动态地这样做,所以最后有很多源文件。到目前为止一切都很好。
FileToSource <- paste("Folder/",df$filename,".R", sep = "")
source(FileToSource, chdir=T)
unsource(......) ???
但是在某些时候我想要清理。我可以删除变量等,但我可以“取消资源”以前的“来源”文件吗?
我一直在寻找一种方法来做到这一点,但到目前为止还没有运气。
你可以想知道是否对“unsource”文件有用,但我喜欢偶尔清理,这可能是其中的一部分。 冲突代码等的可能性较小......
建议?
提前致谢,如果我找到一种方式我也会在这里发布
答案 0 :(得分:2)
您可能需要考虑使用本地环境。假设有一个名为~/x.R
的文件,其中包含一行bb <- 10
。您可以创建新环境
envir <- new.env()
然后通过
在该环境中获取文件 source('~/x.R',local=envir)
然后,您将能够获得bb
envir$bb
的值,并且您不会在全局环境中看到bb
。之后,您可以通过设置envir
或类似内容来删除环境envir <- NULL
。
答案 1 :(得分:2)
很棒,我做了这个测试,以确定它是否/如何运作:
<强> 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是
EMPTY&amp;清洁&amp; TIDY 强>
&LT;&LT;我想要的就是我! &GT;&GT;
感谢@MARAT