我想在函数中开发一个变量作为参数,比如
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"
答案 0 :(得分:4)
我认为你应该能够通过使用以下语法来实现这一目标:
W<<-"Hi I am working on R"
使用&lt;&lt; - 而不是&lt; - 允许您从任何地方访问变量,除非您在具有其他变量的函数中将其掩盖
答案 1 :(得分:2)
实现这一目标有多种可能性,具体取决于您想要走多远。最简单的方法是在全局环境中分配变量W,然后从那里调用其他脚本。这确实打败了一个功能的目的。
最直接的解决方案是在local=TRUE
调用中使用source
选项。这允许源脚本在函数的本地环境中进行搜索。
插图:给出一个文件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
的{{1}},并找到mynewfunc
在本地环境中分配的W
mynewfunc
1}}:
In script : Working in R My W
within function : Working in R My W
最强大的选择是在包中执行此操作。基本上你在包的一个源文件中声明它们。常量W将被加载,并可由该包中的所有函数使用。如果使用命名空间,则可以决定是要导出常量,还是将其保持为隐藏状态,以便只能由自己的函数访问。有关这方面的更多信息,请参阅“编写R扩展”。
在函数中获取脚本文件是处理不同函数的不太健壮的方法。您可以获得非常意外的结果,具体取决于工作区中的变量。如果你想尝试这个,我绝对建议你开始考虑构建自己的包。如果不涉及C代码,这是非常简单的。