在R語言中,等號與賦值有些許的差異,請參考以下的兩個例子做比較:

範例一:

x <- 5
length(x = seq(1,10))
## [1] 10
x
## [1] 5

在本範例程式第一行,將變數 x 賦予 5 之值。

而程式第二行透過指令 length 詢問 x 的長度,此時 x 等於 (=) 一個1到10的序列,因此回傳 10 的長度。

程式的第三行要求 x,因此回傳 5,表示 x 並未因為程式第二行的等號改變其賦值。


範例二:

x <- 5
length(x <- seq(1,10))
## [1] 10
x
##  [1]  1  2  3  4  5  6  7  8  9 10

在本範例程式第一行,將變數 x 賦予 5 之值。

而程式第二行透過指令 length 詢問 x 的長度,此時 x 被賦予 (<-) 一個1到10的序列,因此依然回傳 10 的長度。

程式的第三行要求 x,因此回傳一個1到10的序列,表示 x 已因為程式第二行的賦值而有所改變!


What is done wisely is done well.
用智慧處理的事通常也會有好的結果 (智行之事,其果亦善)。