[R Lang] R Lang與高級醫學統計學(6)
Adrian Chen

這篇文章來講R Lang中的基本函式。關於函式,我們在之前的許多文章中都有接觸過。函式可以說是任何一門程式語言中必備的內容。任何一門高級程式語言,甚至可以沒有變數的概念,但不能沒有函式。函式的一些基本概念就不過多闡述。我們將直接從內建函式開始。

數列函式

使用:seq()sequence()來產生數列向量。

以下是seq()函式的定義:

1
2
3
4
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()函式來創建一個重複數值的數列。其定義如下:

1
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()的延伸。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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從小到大排序後的向量之元素

它們的定義:

1
2
3
4
5
6
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()來強制轉換類別。