
1. 矩陣
矩陣就像Excel的工作表。它用於組合具有相同類型的向量,可以是數字,字符或邏輯。矩陣用於將數據表存儲在R中。
col1 col2 col3
[1,] 5 2 7
[2,] 6 4 3
[3,] 7 5 4
[4,] 8 9 8
[5,] 9 8 7
col1 col2 col3
row1 5 2 7
row2 6 4 3
row3 7 5 4
row4 8 9 8
row5 9 8 7
如果要轉置數據,請使用函數t():
row1 row2 row3 row4 row5
col1 5 6 7 8 9
col2 2 4 5 9 8
col3 7 3 4 8 7
R的功能nrow()和NcoI位()返回的行和列中存在的數據的數目,分別如下:
[1] 3
[1] 5
[1] 5 3
通過正索引選擇行/列
可以按以下方式選擇行和/或列:my_data [row,col]
col1 col2 col3
6 4 3
col1 col2 col3
row2 6 4 3
row3 7 5 4
row4 8 9 8
col1 col2 col3
row2 6 4 3
row4 8 9 8
row1 row2 row3 row4 row5
7 3 4 8 7
my_data[2, 3]
[1] 3
按行/列名選擇
row1 row2 row3 row4 row5
2 4 5 9 8
也可以對矩陣執行簡單的操作。
例如,以下R代碼將矩陣的每個元素乘以2:
col1 col2 col3
row1 10 4 14
row2 12 8 6
row3 14 10 8
row4 16 18 16
row5 18 16 14
或者,計算log2值:
col1 col2 col3
row1 2.321928 1.000000 2.807355
row2 2.584963 2.000000 1.584963
row3 2.807355 2.321928 2.000000
row4 3.000000 3.169925 3.000000
row5 3.169925 3.000000 2.807355
rowSums()和colSums()函數:分別計算每行的總和和每列的總和。
row1 row2 row3 row4 row5
14 13 16 25 24
col1 col2 col3
35 28 29
如果你對行/列均值感興趣,則可以使用函數rowMeans()和colMeans()分別計算行均值和列均值。
apply()的簡化格式如下:
apply(X, MARGIN, FUN)
X:數據矩陣
MARGIN:可能的值為1(對於行)和2(對於列)
FUN:應用於行/列的函數
使用apply()如下:
row1 row2 row3 row4 row5
4.666667 4.333333 5.333333 8.333333 8.000000
col1 col2 col3
7.0 5.6 5.8
2.數據框
數據框就像一個矩陣,但可以具有不同類型的列(數字,字符,邏輯)。行是觀察值(個人),列是變量。
可以使用data.frame()函數創建數據框,如下所示:
name age height married
Zheng Zheng 27 180 TRUE
Wang Wang 25 170 FALSE
Liu Liu 29 185 TRUE
Li Li 26 169 TRUE
要檢查數據是否為數據框格式,請使用is.data.frame()函數。如果數據是數據框,則返回TRUE:
[1] TRUE
[1] FALSE
對象「 patients_data」是一個數據框,但不是對象「 my_data」。我們可以使用as.data.frame()函數將其轉換為數據框:
[1] "matrix"
[1] "data.frame"
如矩陣部分所述,你可以使用函數t()轉置數據框:
按名稱和位置進行正索引
[1] Zheng Wang Liu Li
Levels: Liu Li Zheng Wang
[1] Zheng Wang Liu Li
Levels: Liu Li Zheng Wang
name height
Zheng Zheng 180
Wang Wang 170
Liu Liu 185
Li Li 169
按特徵索引
[1] TRUE FALSE TRUE FALSE
TRUE指定該行包含age> = 27的值。
name age height married
Zheng Zheng 27 180 TRUE
Liu Liu 29 185 TRUE
上面的R代碼命令內容為:R從年齡大於等於27的patients_data獲取所有行,然後返回所有列。
如果你不想查看所選行的所有列數據,但只想顯示例如年齡大於等於27的病人的病人名稱和年齡,則可以使用以下R代碼:
name age
Zheng Zheng 27
Liu Liu 29
name age
Zheng Zheng 27
Liu Liu 29
如果發現選擇語句開始變得不方便,則可以先將行和列選擇放入變量中,例如:
然後,你可以選擇帶有這些變量的行和列:
name age
Zheng Zheng 27
Liu Liu 29
也可以如下使用函數子集()。
在數據框中添加新列
name age height married group
Zheng Zheng 27 180 TRUE recovered_patient
Wang Wang 25 170 FALSE not_recovered_patient
Liu Liu 29 185 TRUE recovered_patient
Li Li 26 169 TRUE not_recovered_patient
也可以使用函數cbind()和rbind()擴展數據框。
3. 獲取幫助
要閱讀有關給定功能的更多信息,例如mean,可以如下使用R函數help():
或使用此:
好了,本期講解就先到這裡。在之後的更新中,我們會進一步為您介紹R的入門,以及常用生物統計方法和R實現。
提前打個預告,接下來我們要正式開始學習R語言的統計學技能啦,下一期將會更新「R的描述性統計分析」。喜歡的同學們快快關注起來吧。

第一講R-基本介紹及安裝
第二講 R-編程基礎-運算、數據類型和向量等基本介紹
當然啦,R語言繪圖的掌握是在長期訓練中慢慢積累的。一個人學習太累,不妨加入「R語言與統計交流群」,和數百位碩博一起學習。
↑↑↑添加客服微信入群交流↑↑↑
END




