第三天 R語言對象:向量和矩陣及其操作 R語言主要分析的對象是數(shù)據(jù)集,R語言數(shù)據(jù)集主要是向量、矩陣、數(shù)據(jù)框、列表、數(shù)組等,我們主要介紹前4種。本文先介紹向量和矩陣。 一、向量(一維數(shù)據(jù)) 向量是R語言中最基本的數(shù)據(jù)對象類型,它可以是數(shù)值型、字符型、邏輯值型、復數(shù)型。注意:同一向量不能混雜多種不同類型的數(shù)據(jù)。 在醫(yī)學數(shù)據(jù)分析中,向量相當于一個變量,向量名為變量名,向量值為變量值。 1. 創(chuàng)建向量 通過函數(shù)c( )實現(xiàn)向量創(chuàng)建功能,例如 x1<-c(2,3,5,7,10) x1 [1] 2 3 5 7 10 >x2<-c("a","b","c") >x2 [1] "a" "b" "c" 2. 向量索引(子集提?。?/strong> 向量子集索引一般采用中括號[ ],根據(jù)元素所在的位置或者名稱提取元素。向量子集的提取常見方法包括位置的提取、根據(jù)值大小提取、名稱的提取、采用subset( )函數(shù)提取。 第一種方法:位置提取法 (1)下標索引(注意:R中下標是從1開始的),例如 x1[1] #返回x1的第1個元素 x1[-1] #返回除第一個元素之外的所有元素 x1[c(2:4)] #返回x1的第2至4個元素 x1[-c(2:4)] #返回x1的除第2至4元素之外的所有元素 (2) which元素位置 通過函數(shù)which( )返回邏輯向量中為TRUE的位置; which.max(x1)返回向量x1中最大值所在的位置; which.min(x1)返回向量x1中最小值所在的位置。 > x1<-c(2,3,5,7,10) > x1[which(x1>3 & x1<8)] [1] 5 7 > x1[which.max(x1)] ten 10 第二種方法:根據(jù)值大小提取 > x1<-c(2,3,5,7,10) > x1[x1>3 & x1<8] # 產(chǎn)生大于3 又小于8的子集 [1] 5 7 第三種方法:根據(jù)名稱索引 先給向量中的每個元素命名,再通過名稱訪問對應的元素: > names(x1)<-c("two","three","five","seven","ten") > x1[c("three","seven")] three seven 3 7 第四種方法:subset生成子集 檢索向量中滿足條件的元素,提取出來: > subset(x1,x1>3 & x1<8) five seven 5 7 3. 向量的編輯 對已創(chuàng)建向量進行增加或刪除元素。 (1)增加元素 >x<-1:5 >x [1] 1 2 3 4 5 >x<-c(x, c(6,7,8)) # 在x后面增加6、7、8 >x [1] 1 2 3 4 5 6 7 8 >x[10]=10 # 增加一個元素,第十個位置為10,第九個為缺失,缺失值用NA表示 >x [1] 1 2 3 4 5 6 7 8 NA 10 (2)刪除元素 >x=1:8 >x [1] 1 2 3 4 5 6 7 8 >x<-x[-c(3,5)] # 加負號,是反向刪除,這是最常見的方式 >x [1] 1 2 4 6 7 8 >x<-x[-1] # 刪去第一個元素 >x [1] 2 4 6 7 8 4.向量排序 函數(shù)sort(),基本格式: sort(x,decreasing=FALSE, na.last= FALSE,...) 其中,x為排序對象(數(shù)值型或字符型);decreasing默認為FALSE即升序,TURE為降序;na.last默認為FALSE,若為TRUE,則將向量中的NA值放到序列末尾。 函數(shù)rank( ),返回值是該向量中對應元素的“排名”。 函數(shù)order(),返回值是對應“排名”的元素所在向量中的位置,例如, >x<-c(1,5,8,2,9,7,4) >x [1] 1 5 8 2 9 7 4 >order(x) [1] 1 4 7 2 6 3 5 說明:默認按升序,排名第2的元素在原向量的第4個位置。 函數(shù)rev( ),將序列進行反轉,即1,2,3變成3,2,1 5.向量的基本運算 向量基本運算函數(shù)也比較多,以下陳列部分: length(x1) #向量的長度 [1] 5 > mean(x1) #計算向量均數(shù) [1] 5.4 > sd(x1) #計算向量的均數(shù) [1] 3.209361 > sum(x1) #計算向量的總計 [1] 27 > median(x1) #計算向量的中位數(shù) [1] 5 二、矩陣(二維數(shù)據(jù)) 矩陣是二維數(shù)組,可以描述二維數(shù)據(jù)。它要求矩陣內(nèi)各元素有相同的類型,都是數(shù)值型,或者字符串型。在醫(yī)學數(shù)據(jù)分析中,一般情況下數(shù)據(jù)集不太會是矩陣,矩陣一般會出現(xiàn)數(shù)據(jù)分析結果中。 1.創(chuàng)建矩陣 矩陣一般在向量的基礎上產(chǎn)生,常用的函數(shù)為matrix()和dim( ) 函數(shù)matrix(),基本格式為: matrix(x, nrow=..., ncol=..., byrow=..., dimnames=...) 其中,x為數(shù)據(jù)向量作為矩陣的元素;nrow設定行數(shù);ncol設定列數(shù);byrow設置是否按行填充,默認為FALSE(按列填充);dimnames用字符型向量表示矩陣的行名和列名。 >x<-1:6 >x [1] 1 2 3 4 5 6 >a<-matrix(x,nrow=3,ncol=2) #采用matrix產(chǎn)生3行2列矩陣 >a [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 > b<-matrix(x,nrow=3,ncol=2,byrow=F, dimnames=list(c("r1","r2","r3"), c("c1","c2"))) > b c1 c2 r1 1 4 r2 2 5 r3 3 6 函數(shù)dim(),主要方式是將向量設定為2維,具有規(guī)定行列數(shù)的矩陣: >dim(x)=c(3,2) # 設為3行2列的矩陣 >x [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 2.矩陣索引(子集提?。?/strong> 矩陣子集的提取和向量類似,主要以中括號[ ]方法提取,由于它是二維數(shù)據(jù),可以通過[ , ]分別提取行和列。主要的提取方式包括位置提取、名稱提取和值大小的提取 位置提取 a[i,j] #返回矩陣a的第i行,第j列的元素 a[i,] #返回矩陣a的第i行 a[,j] #返回矩陣a的第j列 a[c(i:j),] #返回矩陣a的第i至第j行 a[i,j] #返回矩陣a的第i行,第j列的元素 按名稱索引: b["r2","c1"] #返回矩陣c的第r2行,第c1列的元素2 按值大小提取 b[,r2=2] # 返回“r2”一行值為2的一列 b[,r2=2] # 返回“r2”一行值為2的一列 3.矩陣的編輯 數(shù)據(jù)庫合并 函數(shù)rbind(A,B), 縱向合并(增加行),要求列數(shù)相同; 函數(shù)cbind(C,D), 衡向合并(增加列),要求行數(shù)相同。 注意:rbind(A,1) 相當于給矩陣A增加一行“1”。 > rbind(a,b) c1 c2 1 4 2 5 3 6 r1 1 4 r2 2 5 r3 3 6 > cbind(a,b) c1 c2 r1 1 4 1 4 r2 2 5 2 5 r3 3 6 3 6 數(shù)據(jù)庫刪減 a[-1,],刪除矩陣a的第一行 a[,-1],刪除矩陣a的第一列 a[-c(2:4),],刪除矩陣a的第2至4行 4.矩陣的運算 +-*/——四則運算(要求矩陣維數(shù)相同) colSums() #對矩陣的各列求和 rowSums() #對矩陣的各行求和 colMeans() #對矩陣的各列求均值 rowMeans() #對矩陣的各行求均值 t() #對矩陣轉置 %*% #矩陣乘法(要求左陣的列數(shù)=右陣的行數(shù)) diag() #取矩陣對角線元素生成對角矩陣,若對象是向量,則以該向量作為對角元素 solve() #返回逆矩陣(要求矩陣可逆) eigen() #返回矩陣的特征值與特征向量 DAY3的內(nèi)容就介紹到這里! |
|
來自: 妙趣橫生統(tǒng)計學 > 《待分類》