1
廣告我寫的文件的開頭:
t.code = c()
然後像一個函數:
calc <- function(){
..some stuff
t.code = append(t.code, value)
}
在最後我打印t.code的內容,但我看到NULL,所以似乎沒有使用全局變量,有什麼建議嗎?
廣告我寫的文件的開頭:
t.code = c()
然後像一個函數:
calc <- function(){
..some stuff
t.code = append(t.code, value)
}
在最後我打印t.code的內容,但我看到NULL,所以似乎沒有使用全局變量,有什麼建議嗎?
您可以但必須使用全局賦值運算符<<-
(或者更復雜一點,assign
)。
t.code <<- append(t.code,value)
而現在的標準免責聲明:利用<<-
往往是望而卻步,因爲節目的這種風格是不是真的那種成語的R意爲。
您可能會從仔細閱讀R的scoping規則中受益。
如果在任何搜索到的環境中找不到該變量,則<< << - '僅在全局環境中分配。 – 2012-03-24 13:40:12
在R中分配變量的慣用方式是使用'< - '而不是'='。但在這種情況下,您正在尋找'<< - ':http://stat.ethz.ch/R-manual/R-devel/library/base/html/assignOps.html從文檔:運營商<<- and ->>原因通過環境進行搜索以獲得所分配變量的現有定義。如果找到這樣一個變量(並且它的綁定沒有被鎖定),那麼它的值被重新定義,否則賦值在全局環境中進行。 – 2012-03-21 19:43:50
對於全局變量的賦值是很少需要的(或者是一個好主意),特別是如果你是R的新手。我會將你的函數'return(value)'並追加到一個單獨的步驟中。 – Justin 2012-03-21 19:49:41