這篇文章來講 R Lang 中的基本函式。關於函式,我們在之前的許多文章中都有接觸過。函式可以說是任何一門程式語言中必備的內容。任何一門高級程式語言,甚至可以沒有變數的概念,但不能沒有函式。函式的一些基本概念就不過多闡述。我們將直接從內建函式開始。
數列函式
使用 :、seq() 或 sequence() 來產生數列向量。
以下是 seq() 函式的定義:
seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)), length.out = NULL, along.with = NULL, ...)解釋一下引數:
- from = 1 數列起始值
- to = 1 數列結束值
- by 數列每次增加值
- length.out 數列長度(元素數目)
sequence() 函式比 seq() 函式更為強大,支援傳入向量,來創建符合向量要求的數列。
重複元素函式
使用 rep() 函式來創建一個重複數值的數列。其定義如下:
rep(x, times = 1, length.out = NA, each = 1)解釋一下引數:
- x:使用者想要相同重複元素的數值向量。
- times:數值向量x重複的次數。
- each:數值向量x每個元素重複的次數。
- length.out = NA:數值向量x重複後的長度。
算數函式
R Lang 中內建了許多算數函式,包含指數、對數、Gamma 函數、Beta 函數、三角函數等。
| 符號 | 定義 |
|---|---|
| round(x, digits = 0) | 設定小數位數 |
| signif(x, digits = 6) | 設定實數列印出的小數位數 |
| trunc(x) | 將 x 的小數截斷,向 0 靠近 |
| ceiling(x) | 大於 x 的最小整數 |
| floor(x) | 小於 x 的最大整數 |
| sign(x) | 求 x 的正負值,回傳 1,0 或 -1 |
| abs(x) | 求 x 的絕對值 |
| sqrt(x) | x 開平方根 |
| exp(x) | |
| expm1(x) | 當 ,計算 |
| log(x) | |
| log10(x) | |
| log2(x) | |
| logb(x, base = z) | |
| log1p(x) | 當 ,計算 |
| gamma(x) | |
| beta(a, b) | |
| lbeta(a, b) | |
| digamma(x) | |
| trigamma(x) | |
| psigamma(x, deriv = 0) | |
| sin(x) cos(x) tan(x) | 三角函數 |
| asin(x) acos(x) atan(x) | 反三角函數 |
| sinh(x) cosh(x) tanh(x) | 雙曲函數 |
| asinh(x) acosh(h) atanh(x) | 反雙曲函數 |
組合與階乘函式
lchoose() 和 lfactorial() 在上述函式的基礎上取自然對數。
選擇資料函式
函式 all(x) 與 any(x) 可以用來查看特定向量物件 obj.vec 的元素是否符合某些特定條件,回傳邏輯純量 TRUE 或 FALSE。函式 which() 查看特定向量物件 obj.vec 的元素是否符合某些特定條件,然後回傳一個下標向量,紀錄向量物件符合某些特定條件的元素位置。函式指令 which.max() 與 which.min() 是函式指令 which() 的延伸。
x.vec <- c(-1:2)
all(x.vec > 0)## [1] FALSE
any(x.vec > 0)## [1] TRUE
which(x.vec > 0)## [1] 3 4
which.max(x.vec)## [1] 4
which.min(x.vec)## [1] 1排序函式
| 函式 | 說明 |
|---|---|
| rev(x) | 將向量 x 元素反轉列出 |
| rank(x) | 向量 x 元素的對應排序相同數值內設排序方式 |
| sort(x) | 向量 x 從小到大列出 |
| order(x) | 將向量 x 從小到大排序後的向量之元素 |
它們的定義:
rev(x)sort(x, decreasing = FALSE, na.last = NA, ...)rank(x, na.last = TRUE, ties.method = c("average", "first", "last", "random", "max", "min"))order(x, ..., na.last = TRUE, decreasing = FALSE, method = c("shell", "radix"))引數:
-
x: 引數 x 為向量
-
decreasing:
- decreasing = FALSE 為 R Lang 內設從小到大排序
- decreasing = TRUE 則從大到小排序
-
na.last:
- na.last = TRUE 為 R Lang 內設將 NA 排序在最大
- na.last = FALSE 為 R Lang 內設將 NA 排序在最小
- na.last = NA 為 R Lang 內設將 NA 排除
-
函式
rev(x)回傳一個向量 z,是將向量 x 元素反轉 -
函式
sort(x)回傳一個向量 z,是將向量 x 的元素從小到大排序的結果列出 -
函式
rank(x)回傳一個向量 z,是將向量 x 每一個元素從小到大排序之後,x 元素之相對順序 (rank) -
“average”: 相同數值都是回傳平均排序值
-
“first”: 相同數值都是回傳依序由小到大不同排序值
-
“last”: 相同數值都是回傳依序由大到小排序值
-
“random”: 相同數值回傳隨機排序值
-
“max”: 相同數值回傳最大排序值
-
“min”: 相同數值回傳最小排序值
物件查看與強制轉換函式
使用 is.object(),比如 is.na(),is.vector() 等查看某一特定物件是否屬於某一類別。
使用 as.object() 來強制轉換類別。