上週實習課使用 R 時,指令的回傳值多半只有「一個」。但 R 其實是一種以向量作為基本單位的程式語言,所以對於「一個回傳值」更精確的描述應該是「一個長度為 1 的向量」。
#> [1] 2
#> [1] TRUE
#> [1] 1
我們上週簡短提過以 :
製造數列的方式 (e.g. 1:10
)。事實上,這個回傳的數列即是一個 vector。另外,由於這個 vector 的每個元素皆是整數,因此這個 vector 屬於 integer vector。我們可以使用 typeof()
確認 vector 的類別
#> [1] "integer"
R 裡面的 vector 可以被分成 6 種類別,其中常見的 4 種分別為 integer
, double
, , character
, logical
:
製造數列,也可以使用 c()
(稱為 concatenate) 組出任意序列的 vector。
c()
製造 integer vector 時,每個整數數字後面必須接 L
,若沒有加上 L
, R 會將製造出來的 vector 視為 double vector。#> [1] -1 5 2
#> [1] -1 5 2
#> [1] "integer"
#> [1] "double"
double vector 儲存的是浮點數,亦即含有小數點的數字 (e.g 1.2
, -0.75
)
在 R 裡面,integer vector 與 double vector 合稱為 numeric vector,兩者之間的區隔通常也不太重要,因為 R 在運算時,通常會將這兩種資料類型自動轉換成合適的類型
#> [1] "integer"
#> [1] "double"
#> [1] TRUE
#> [1] TRUE
#> [1] "double"
#> [1] "double"
Inf
: 代表無限大NaN
: “Not a Number”,常見於數字運算不符數學定義時,例如:
#> Warning in log(-1): NaNs produced
#> [1] NaN
#> [1] NaN
#> [1] NaN
除了數字以外,R 也可以儲存字串 (string)。character vector 的每個元素皆由一個字串所組成。在 R 裡面,只要是被引號 (quote, '
或 "
皆可) 包裹的東西就是字串,放在引號內的可以是任何字元 (e.g. 空白、數字、中文字、英文字母)
#> [1] "1.1"
#> [1] "你 好!"
#> [1] "1.1" "你 好!"
"
,需在字串內的引號前使用跳脫字元 \
,以表示此引號是字串的一部分而非字串的開頭或結尾
"\"" # escape a double quote
'\'' # escape a single quote
'"' # a double quote as string without escaping
"'" # a single quote as string without escaping
#> [1] "\""
#> [1] "'"
#> [1] "\""
#> [1] "'"
logical vector 的每個元素由 TRUE
或 FALSE
組成。
可以使用 c()
一項項手動輸入製造 logical vector
==
, !=
, >
, <
, %in%