R Shiny unource源文件

时间:2015-01-07 22:13:18

标签: r dynamic shiny

R / Shiny 的一个强大功能是R代码中“源”另一个R文件的可能性。我动态地这样做,所以最后有很多源文件。到目前为止一切都很好。

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

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

但是在某些时候我想要清理。我可以删除变量等,但我可以“取消资源”以前的“来源”文件吗?

我一直在寻找一种方法来做到这一点,但到目前为止还没有运气。

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

建议?

提前致谢,如果我找到一种方式我也会在这里发布

2 个答案:

答案 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