我想開發一個變量函數中的參數一個全局變量(文本),像我如何定義中的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