2012-11-07 138 views
-5

可能重複:
How do you use 「<<-」 (scoping assignment) in R?<< - 在R中是什麼意思?

我讀一個僞代碼。我多次遇到這個<<-<<-有什麼意義?這是什麼意思?當使用<<-運營商時,我們需要考慮什麼或要小心?

+0

相關:[爲什麼使用'<< - '皺眉並且我該如何避免它?](http://stackoverflow.com/q/9851655/271616) –

+4

- 1在提問之前,您看過的文檔是否有問題?預計你會努力幫助自己。 [so]並不意味着替換您正在使用的任何工具的文檔。 –

回答

5

從幫助文件?"<<-"

運營商< < - 和 - >>通常只用在函數中,並 事業通過家長環境的變量的現有 定義作出的檢索被分配。如果發現這樣一個變量 (並且其綁定未鎖定),則其值被重新定義,否則 賦值發生在全局環境中。注意它們的 語義不同於S語言的語義,但在 連同R的作用域規則中很有用。有關更多詳細信息和示例,請參閱'The R Language Definition'手冊。

下面是一個例子:

foo <- function(){ 
    a <<- 1 
} 

現在運行它,看看它是如何在全球環境中創建一個新對象a

a 
Error: object 'a' not found 

foo() 
a 
[1] 1 

的原因,一要儘量避免這種情況,它打破了功能性編程範例。在函數式編程中,人們只編寫依賴於其輸入而不產生副作用的函數。

<<-的副作用是在父環境中創建一個新對象,因此不再是函數式編程。

在大多數日常使用中,沒有必要使用<<-,雖然它在使用具有狀態的封閉時很有用,即記住他們過去做過的事情。這在Hadley's的精彩細節中有所描述devtools wiki