【圖書推薦】《R語言醫學數據分析實踐》-CSDN博客
《R語言醫學數據分析實踐 李丹 宋立桓 蔡偉祺 清華大學出版社9787302673484》【摘要 書評 試讀】- 京東圖書 (jd.com)
R語言醫學數據分析實踐-R語言的數據結構-CSDN博客
矩陣是一個二維數組,矩陣中的元素都具有相同的類型(數值型、字符型或邏輯型)。矩陣是一種特殊的向量,包含兩個附加的屬性:行數和列數。矩陣中每一行代表一條記錄,而每一列代表一個屬性。在醫學應用中,矩陣廣泛用于存儲和處理醫學數據,如實驗數據、影像數據、生物標記物數據等。矩陣用matrix函數定義,根據保存的行數和列數對應到矩陣的元素,定義的格式如下:
matrix(data #要創建矩陣的數據,一般為向量nrow #行數ncol #列數byrow = TRUE #若為TRUE,則按行填充矩陣;若為FALSE,則按列填充矩陣dimnames #用于指定行和列的名稱,默認為NULL
)
matrix()函數把矩陣元素以一個向量的形式輸入,用nrow和ncol規定行數和列數。默認情況下,向量元素填入矩陣的默認次序是按列填入。使用參數byrow=TRUE可以轉換成按行填入。dimnames函數的第一個向量為行名,第二個向量為列名。
創建矩陣的R代碼如下:
patient_height <- c(165, 172, 180) #創建身高向量
patient_weight <- c(60, 70, 75) #創建體重向量
patient_matrix <- matrix(c(patient_height, patient_weight), nrow = 3, ncol = 2, byrow = TRUE, dimnames = list(c("Patient1", "Patient2", "Patient3"),c("Height", "Weight"))) #創建三行二列的矩陣
patient_matrix #查看創建的矩陣
代碼運行結果如圖2-3所示,成功創建了一個包含3個病人身高和體重數據的矩陣。
?圖2-3
當我們完成矩陣的創建后,如何查看矩陣的屬性呢?可以使用class()函數查看數據結果類型,使用typeof()函數查看數據元素類型。矩陣有一個dim屬性,內容是一個包含兩個元素的向量,分別為矩陣的行數和列數。dim屬性可以使用dim()函數訪問,而查看數據元素個數則使用length()函數。
除了查看矩陣的屬性之外,還可以對矩陣的元素進行修改。訪問矩陣元素有兩種方式:按索引訪問和按名稱訪問。按索引訪問需提供行和列對應的索引,以獲取對應位置元素的值。比如想查看第二列第二行的內容,可以使用“patient_matrix[2,2]”來獲得。此外,還能通過名稱訪問,比如“patient_matrix["Patient2","Weight"]”,這將得到相同的結果。
查看矩陣屬性和修改矩陣元素的R代碼如下:
class(patient_matrix) #查看數據結果類型
typeof(patient_matrix) #查看數據元素類型
dim(patient_matrix) #查看數據維度
length(patient_matrix) #查看數據元素個數
patient_matrix[2,2] #查看第二列第二行內容
patient_matrix["Patient2","Weight"]
patient_matrix[2,2]<-65 #修改第二列第二行內容
patient_matrix
代碼運行結果如圖2-4所示。
?
圖2-4
使用colnames()函數可以給矩陣中的每列命名,使用rownames()函數可以給矩陣中的每行命名。給矩陣的行和列命名后,可以用名稱代替數字索引,R代碼如下:
###按數字索引訪問矩陣 ###
mat_a = matrix(11:16, nrow=3, ncol=2, TRUE) #按行創建一個3×2的矩陣mat_a
print(mat_a)
###按名稱訪問矩陣 ###
colnames(mat_a) = c('c1', 'c2') #給mat_a的每一列取名
rownames(mat_a) = c('r1', 'r2', 'r3') #給mat_a的每一行取名
print(mat_a)
代碼運行結果如圖2-5所示。
?
圖2-5
?