在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
已因為程式第二行的賦值而有所改變!