我有一个 R 脚本,它采用 R 的其他脚本并以这种方式操作它们,并且还执行它们的代码。我的脚本使用一些变量(显然),当其他脚本使用公共变量名时,我会陷入混乱。我希望我可以像在胶囊中一样执行其他脚本,这样重合的变量就不会互相影响。
我一直在阅读有关环境的内容,并进行了很多尝试,但我没有理解它们的真正含义。
Example:
script1.txt
___________
i=sample(10:20,1)
script2.txt
___________
i=sample(10:20,1)
myscript.txt
___________
other.script = c("script1.txt", "script2.txt")
for( i in 1:2 ) {
source(other.script[i])
}
i==2
我希望每个变量“i”尽其职责而不影响其他变量(特别是 myscript 中的变量,我不太关心其他变量)。
处理这个问题的最佳方法是创建一组函数来分割脚本捕获的功能。每个函数都在自己的环境中执行,防止变量相互干扰。理想情况下,函数不应太长,例如 10-20 行或代码。比调用这些函数来完成工作的更大的脚本。如果你正确地做到了这一点,你的脚本就会简短而切题。我通常将这些函数存储在一个或多个脚本文件中,以备使用source
由需要它们的脚本编辑。您甚至可以将它们包裹在一个包裹中。
按照您想要订购脚本的方式,所有变量都是全局的,即在整个程序中都可以访问。一般来说,全局变量应该像瘟疫一样避免。这正是因为您的问题集中在:如何防止变量相互干扰。就像我说的,抽象为函数或对象是防止这种情况发生的方法。有关全局变量等的更多信息可以在那里找到:
- R 中的全局变量和局部变量 https://stackoverflow.com/questions/10904124/global-and-local-variables-in-r
- R 中的全局变量 https://stackoverflow.com/questions/1236620/global-variables-in-r?rq=1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)