2012-03-21 24 views
1

可能重複:
Global variables in R我不能在R中使用Global vars?

廣告我寫的文件的開頭:

t.code = c() 

然後像一個函數:

calc <- function(){ 

    ..some stuff 

    t.code = append(t.code, value) 
} 

在最後我打印t.code的內容,但我看到NULL,所以似乎沒有使用全局變量,有什麼建議嗎?

+3

在R中分配變量的慣用方式是使用'< - '而不是'='。但在這種情況下,您正在尋找'<< - ':http://stat.ethz.ch/R-manual/R-devel/library/base/html/assignOps.html從文檔:運營商<<- and ->>原因通過環境進行搜索以獲得所分配變量的現有定義。如果找到這樣一個變量(並且它的綁定沒有被鎖定),那麼它的值被重新定義,否則賦值在全局環境中進行。 – 2012-03-21 19:43:50

+1

對於全局變量的賦值是很少需要的(或者是一個好主意),特別是如果你是R的新手。我會將你的函數'return(value)'並追加到一個單獨的步驟中。 – Justin 2012-03-21 19:49:41

回答

4

您可以但必須使用全局賦值運算符<<-(或者更復雜一點,assign)。

t.code <<- append(t.code,value) 

而現在的標準免責聲明:利用<<-往往是望而卻步,因爲節目的這種風格是不是真的那種成語的R意爲。

您可能會從仔細閱讀R的scoping規則中受益。

+1

如果在任何搜索到的環境中找不到該變量,則<< << - '僅在全局環境中分配。 – 2012-03-24 13:40:12