我想开发一个变量函数中的参数一个全局变量(文本),像我如何定义中的R
W<-"Hi I am working on R" #W is the variable, it is the text file
我要开发的功能就像是getText=function(W){}
这个功能得到调用另一个脚本。
则W可以作为全局变量无处不在的脚本出现W的工可显示"Hi I am working on R"
我想开发一个变量函数中的参数一个全局变量(文本),像我如何定义中的R
W<-"Hi I am working on R" #W is the variable, it is the text file
我要开发的功能就像是getText=function(W){}
这个功能得到调用另一个脚本。
则W可以作为全局变量无处不在的脚本出现W的工可显示"Hi I am working on R"
有多种方法可以实现,取决于你想要走多远。最简单的方法就是在全局环境中分配变量W,并从那里调用其他脚本。这确实打败了功能的目的。
最直接的解决方案是在source
调用中使用选项local=TRUE
。这允许源脚本在功能的本地环境中搜索。
一个例证:给定一个文件Myscript.r:
cat("In script : ",x," ",W,"\n")
afunc <- function(y){
cat("within function : ",y," ",W,"\n")
}
afunc(x)
您可以定义源在本地的函数:
mynewfunc <- function(x){
W <- "My W"
source("Myscript.R",local=TRUE)
}
avar <- "Working in R"
mynewfunc(avar)
而且做的事情需要做:它发现x
从全球环境传递到mynewfunc
,它发现在本地环境mynewfunc
中分配的W
:
In script : Working in R My W
within function : Working in R My W
尽管在一个包中这样做最健壮的选择。基本上你可以在你的软件包的源文件中声明它们。常量W将被加载,并且可以被该包中的所有函数使用。如果您使用命名空间,则可以决定是要导出常量,还是将其保留为隐藏状态,以便只能通过自己的函数访问它。有关这方面的更多信息,您可以在“Writing R extensions”中找到。
在函数中采集脚本文件是处理不同函数的不太稳健的方式。您可能会得到非常意想不到的结果,具体取决于工作区中的变量。如果你想尝试这个,我绝对建议你开始研究构建你自己的软件包。如果不涉及C代码,这非常简单。
我想你应该能够通过使用下面的语法来实现:使用< <
W<<-"Hi I am working on R"
- 而不是< - 允许你从任何地方访问你的变量,除非你掩盖它与功能另一个变量
是“?源”你在找什么?您可以在给定文件中定义W,然后在其他脚本中包含source(“scriptThatContainsW.R”)。另外 - 你可以在你的'Rprofile'页面中定义'W',这样它总是可用的。 – Chase 2011-06-13 12:40:30
你可以使用'assign(...,pos = globalenv())'将变量及其相应的值赋值给全球环境可以从“无处不在”访问。 – 2011-06-13 12:50:47
这个分配(...,pos = globalenv())的作品,我试过thx! – Eva 2011-06-14 02:10:06