林嶔 (Lin, Chin)
Lesson 1 R語言基本介紹及環境安裝
R有非常先進的數據視覺化系統
R有很多進階數據分析工具
R是完整的資料科學解決方案
– 與其他統計軟體相比,R語言更接近程式語言,因此在熟悉以後更能建立自己的常規工作pipeline,加快自己的工作效率。
– 與其他程式語言相比,R語言更專注在統計分析功能的開發上,因此相關的功能較完善,比較容易找到合適的函數進行運算。
– R語言是生物資訊、統計分析、資料科學領域上的強勢語言,這些都是醫學院的學生未來比較有可能涉獵的領域。
– 截止至2021年4月,R 在TIOBE Index排名第16位。
– 以Download R for Windows為例。
– 選base
– 選Download R 4.0.4 for Windows,如要下載先前版本選Previous releases
– 程式安裝位置盡量選擇D槽
– 選Free的版本
– 選Download RStudio Desktop
– 網頁往下滑會有其他版本可選擇
– 介面概況
– 可以調整介面字體大小,Tools → Global Options → Appearance → Zoom or Editor font size
– 建立一個Project : New Directory → New Project → 輸入Directory name → 選擇儲存位置 → Create Project
– 因此,使用R的第一步,請先將他當作一個高級的計算機。
– 請試著在左邊的Console視窗中,輸入下列程式碼,並體會他的計算功能
– 『函數』的使用方式是打下特定的字句,並且在『小括號』內輸入參數作為「input」,接著電腦將會根據你的指令進行回答。
函數「exp()」:負責進行自然指數運算
函數「sqrt()」:負責進行平方根運算
函數「log()」:負責(自然)對數運算
– 有趣的是,『函數』中的『input』不見得只能有1個,如函數「log()」可以額外輸入對數的底數,並以『,』進行分隔:
– 需要注意的是,如果我們不告訴電腦哪個是底數,哪個是運算目標,哪個是底數,那他將會依序認為你輸入的第一個數為需要被運算的數,而第二個數為底數:
– 註:物件的屬性有很多種,我們第二節才會對他進行詳細的介紹
– 注意,等號的右邊為「input」,等號的左邊為「output」
– 如果你只是需要查看物件內容,事實上直接輸入物件名稱也可以達到相同效果
– 物件強大的地方在於,我們可以將其做為暫存的工具,並且可以直接對「x」物件進行運算
– 函數「c()」中間以逗點為界,此函數可以將不同「數字」合併在同一個物件內
– 問題1:請試著利用物件,列出1至10的平方根與3次方結果
– 問題2:請試著告訴我「%%」這個運算符號的意義(利用物件功能大量運算將有助於你總結規律得到答案)
## [1] 1.000000 1.414214 1.732051 2.000000 2.236068 2.449490 2.645751 2.828427
## [9] 3.000000 3.162278
## [1] 1 8 27 64 125 216 343 512 729 1000
## [1] 1 2 0 1 2 0 1 2 0 1
## [1] 1 2 3 0 1 2 3 0 1 2
接著我們將學習利用物件索引叫出物件內的特定內容
在R裡面,「中括號」是索引函數,在物件的後面使用「中括號」,將可以叫出指定位置的內容
– 註,每個人的X不一樣(以下範例數字為3的範例),由老師指定
## [1] 1 3 4 12 16 192 208
y = c(1, 3)
y[3] = y[1] + y[2]
y[4] = y[2] * y[3]
y[5] = y[3] + y[4]
y[6] = y[4] * y[5]
y[7] = y[5] + y[6]
y
## [1] 1 3 4 12 16 192 208
y = c(1, 3)
i = 1
y[i+2] = y[i] + y[i+1]
i = 2
y[i+2] = y[i] * y[i+1]
i = 3
y[i+2] = y[i] + y[i+1]
i = 4
y[i+2] = y[i] * y[i+1]
i = 5
y[i+2] = y[i] + y[i+1]
y
## [1] 1 3 4 12 16 192 208
變數(Variable)層:邏輯(logical)向量、整數(integer)向量、因子(factor)向量、數字(numeric)向量、文字(character)向量
陣列(Array)層:矩陣(matrix)、資料表(data.frame)
列表(List)層:列表(list)、S3物件(S3 class)、S4物件(S4 class)
在這裡我們先不要被一大堆名詞定義給嚇到,我們先從簡單的變數(Variable)層物件開始認識,其他的部分到我們開始使用後再學習。
變數層中有幾個函數相當重要:
– 函數「as.XXX()」:可以強迫某個向量內所有的內容全部轉換為該種類
– 函數「class()」:可以查詢該物件的屬性
函數「length()」可以查詢該向量的長度
函數「levels()」可以查詢因子向量的類別種類
d = c("A", "B", "C", "C", "B")
class(d)
d1 = as.factor(d)
d1
n = length(d1)
n
categories = levels(d1)
categories
x = c(16, 6, 13, 1, 3, 4, 14, 11, 11, 10, 9, 4, 6, 3, 9, 4, 2, 14, 17, 13, 16, 9, 6, 16, 1, 1,
9, 5, 8, 6, 14, 11, 13, 17, 3, 9, 20, 9, 11, 4, 17, 8, 3, 16, 8, 4, 8, 9, 20, 14, 14, 5,
14, 6, 4, 6, 6, 13, 1, 9, 6, 14, 16, 9, 20, 16, 9, 13, 13, 4, 2, 5, 8, 14, 18, 16, 16, 4,
18, 11, 18, 11, 10, 6, 5, 17, 9, 11, 13, 20, 8, 8, 16, 9, 13, 4, 3, 17, 16, 9, 6, 8, 3, 8,
2, 20, 11, 14, 16, 8, 11, 13, 1, 4, 20, 16, 17, 3, 16, 5, 20, 20, 5, 4, 5, 16, 6, 11, 10,
2, 17, 13, 18, 2, 13, 2, 9, 2, 9, 13, 16, 8, 5, 11, 6, 18, 9, 9, 5, 11, 1, 8, 5, 2, 9, 16,
1, 3, 5, 6, 2, 1, 9, 16, 20, 6, 4, 6, 8, 3, 5, 13, 17, 6, 1, 6, 4, 9, 6, 6, 5, 5, 5, 17, 8,
13)
– 問題:請試著告訴我…
這串數列有共幾「個」數字?
共有幾「種」數字在物件「x」內?
這個數列中缺少了1至20中的哪些數字?
## [1] 186
## [1] 16
lvl.x = levels(factor(x)) # 首先先把所有的數字種類找到,但此時是文字格式
idx.x = as.integer(lvl.x) # 將文字改成索引值
y = 1:20 # 建立一個全新的1至20完整向量
y[-idx.x] # 列出索引值「以外」的數字!
## [1] 7 12 15 19
– 我們已經學到下列功能,這些功能對於往後的應用都相當重要: