開(kāi)始
??? 開(kāi)始R語(yǔ)言的學(xué)習(xí)已經(jīng)有一段時(shí)間了,正在按計(jì)劃開(kāi)始學(xué)習(xí),雖然年底有點(diǎn)忙還是堅(jiān)持按計(jì)劃進(jìn)行學(xué)習(xí),這是學(xué)習(xí)的第一個(gè)節(jié)點(diǎn)時(shí)間,也該總結(jié)一下學(xué)習(xí)的成果,同時(shí)也勉勵(lì)一下自己堅(jiān)持,就像笑來(lái)老師說(shuō)“短期期望不要太高,長(zhǎng)期期望不要太低”。
第一章 R語(yǔ)言介紹
1.1為何要使用R
優(yōu)勢(shì):
免費(fèi),開(kāi)源的社群模式,支持各種圖標(biāo)創(chuàng)作,是一個(gè)可進(jìn)行交互式數(shù)據(jù)分析和探索的強(qiáng)大平臺(tái),從多個(gè)數(shù)據(jù)獲取數(shù)據(jù)轉(zhuǎn)化為可用,各種圖形界面支持GUI,支持各種系統(tǒng)
難點(diǎn):
由于許多功能都是由獨(dú)立貢獻(xiàn)者編寫(xiě)的可選模塊提供的,這些文檔可能比較零散而且很難找到。事實(shí)上,要掌握R的所有功能,可以說(shuō)是一項(xiàng)挑戰(zhàn)。
1.2 R的獲取和安裝
R可以在CRAN(Comprehensive R Archive Network)http://cran.r-project.org上免費(fèi)下載
疑問(wèn):CRAN下載和安裝???已經(jīng)見(jiàn)解決(見(jiàn)R語(yǔ)言分享第一篇文章)
1.3 R的使用
注意:rnorm(5)-> x與x<-rnorm(5)的語(yǔ)句等價(jià),注釋由符號(hào)#開(kāi)頭。在#之后出現(xiàn)的任何文本都會(huì)被R解釋器忽略
1.3.2獲取幫助
實(shí)例:
1.4包
R提供了大量開(kāi)箱即用的功能,但它最激動(dòng)人心的一部分功能通過(guò)可選模塊的下載和安裝來(lái)實(shí)現(xiàn)的。
使用命令 install.packages()安裝包? update.packages()更新安裝包? installed.packages()例出安裝包。
1.5批處理
outfile是接收輸出文件的文件名,options部分則列出了控制執(zhí)行細(xì)節(jié)的選項(xiàng)。依照慣例,infile的擴(kuò)展名是.R,outfile的擴(kuò)展名為.Rout。
第二章 創(chuàng)建數(shù)據(jù)集
2.1數(shù)據(jù)集的概念
R可以處理的數(shù)據(jù)類(lèi)型(模式)包括數(shù)值型、字符型、邏輯型(TRUE / FALSE)、復(fù)數(shù)型(虛
數(shù))和原生型(字節(jié))。在R中,PatientID、AdmDate和Age為數(shù)值型變量,而Diabetes和Status則為字符型變量。另外,你需要分別告訴R:PatientID是實(shí)例標(biāo)識(shí)符,AdmDate含有日期數(shù)據(jù),Diabetes和Status分別是名義型和有序型變量。R將實(shí)例標(biāo)識(shí)符稱(chēng)為rownames(行名),將類(lèi)
別型(包括名義型和有序型)變量稱(chēng)為因子(factors)。
2.2數(shù)據(jù)結(jié)構(gòu)
注意:
1,單個(gè)向量中的數(shù)據(jù)必須,擁有相同的類(lèi)型或模式(數(shù)值型、字符型或邏輯型)。同一向量中無(wú)法混雜不同模式的數(shù)據(jù)。
2,標(biāo)量是只含一個(gè)元素的向量,例如f <- 3、g <- "US"和h <- TRUE,它們用于保存常量。
3,通過(guò)在方括號(hào)中給定元素所處位置的數(shù)值。
4,最后一個(gè)語(yǔ)句中使用的冒號(hào)用于生成一個(gè)數(shù)值序列
實(shí)例向量:
2.2.2矩陣
矩陣是一個(gè)二維數(shù)組,只是每個(gè)元素都擁有相同的模式(數(shù)值型、字符型或邏輯型)。可通
過(guò)函數(shù)matrix()創(chuàng)建矩陣。
實(shí)例
#矩陣
y<-matrix(1:20,nrow = 4,ncol = 5) #創(chuàng)建矩陣行4例5
cells <-c(1,2,3,4)
rnames <-c("r1","r2")
cnames <-c("c1","c2")
newmatrix <-matrix(cells,nrow = 2,ncol = 2,byrow = T,dimnames =list(rnames,cnames))#按行填充
newmatrix
twomatrix <-matrix(cells,nrow = 2,ncol = 2,byrow = F,
dimnames =list(rnames,cnames))#按例填充
Twomatrix
注意:
其中vector包含了矩陣的元素,nrow和ncol用以指定行和列的維數(shù),dimnames包含了可選
的、以字符型向量表示的行名和列名。選項(xiàng)byrow則表明矩陣應(yīng)當(dāng)按行填充(byrow=TRUE)
還是按列填充(byrow=FALSE)
實(shí)例:
YY <- matrix(1:10,nrow = 2)
> YY
[,1] [,2] [,3] [,4] [,5]
[1,]13579
[2,]246810
> YY[2,]#取行
[1]2468 10
> YY[,2]#取例
[1] 3 4
> YY[2,4]#取只定行列
[1] 8
>
YY[2,c(3,5)]#確制定行的多例
[1]6 10
>
2.2.3數(shù)組
數(shù)組(array)與矩陣類(lèi)似,但是維度可以大于2。數(shù)組可通過(guò)array函數(shù)創(chuàng)建,形式如下:
myarray <-array(vector, dimensions, dimnames)
其中vector包含了數(shù)組中的數(shù)據(jù),dimensions是一個(gè)數(shù)值型向量,給出了各個(gè)維度下標(biāo)的最大值,而dimnames是可選的、各維度名稱(chēng)標(biāo)簽的列表。
注意創(chuàng)建順序?yàn)椋盒欣眄槃?chuàng)建
示例
> sheet1 <- c("A1","A2")# 創(chuàng)建向量
> sheet2 <- c("B1","B2","B3") #創(chuàng)建向量
> sheet3 <-c("c1","c2","c3","c4")# 創(chuàng)建向量
>
> E <- array(1:24,c(2,3,4),dimnames = list(sheet1,sheet2,sheet3))#創(chuàng)建2x3x4 行例表順創(chuàng)建
> E
, , c1
B1 B2 B3
A1135
A2246
, , c2
B1 B2 B3
A179 11
A28 10 12
, , c3
B1 B2 B3
A1 13 15 17
A2 14 16 18
, , c4
B1 B2 B3
A1 19 21 23
A2 20 22 24
> E [1,1,1]# 行列表
[1] 1
2.2.4數(shù)據(jù)框
由于不同的列可以包含不同模式(數(shù)值型、字符型等)的數(shù)據(jù),數(shù)據(jù)框可通過(guò)函數(shù)data.frame()創(chuàng)建:mydata <- data.frame(col1, col2,col3,...)
實(shí)例
#創(chuàng)建數(shù)據(jù)框
> #創(chuàng)建數(shù)據(jù)框
> MYID <- c(1,2,3,4)
> age <- c(21,23,23,25)
> diabetes <-c("T1","T2","T1","T2")
> sad <- c("poor","improved","excellent","poor")
> patientdata <- data.frame(MYID,age,diabetes,sad)
> patientdata
MYID age diabetessad
1121T1poor
2223T2improved
3323T1 excellent
4425T2poor
注意:每一列數(shù)據(jù)的模式必須唯一,不過(guò)你卻可以將多個(gè)模式的不同列放到一起組成數(shù)據(jù)框。Attach注意當(dāng)名稱(chēng)相同的對(duì)象不止一個(gè)時(shí),這種方法的局限性就很明顯了
> summary(mtcars$mpg)
Min. 1st Qu.MedianMean 3rd Qu.Max.
10.4015.4219.2020.0922.8033.90
> attach(mtcars)
> summary(mpg)
Min. 1st Qu.MedianMean 3rd Qu.Max.
10.4015.4219.2020.0922.8033.90
> plot(mpg,disp)
> plot(mpg,wt)
> detach(mtcars)
> mpg <-c(25,36,47)
> attach(mtcars)
with用法示例
with(mtcars,{print(summary(mpg))#輸出到屏幕 統(tǒng)計(jì)概要
+plot(mpg,disp)#對(duì)其繪tu
+plot(mpg,wt)})#對(duì)其繪tu
Min. 1st Qu.MedianMean 3rd Qu.Max.
10.4015.4219.2020.0922.8033.90
注意:
Attach語(yǔ)句的注意:在數(shù)據(jù)框mtcars被綁定(attach)之前,你們的環(huán)境中已經(jīng)有了一個(gè)名為mpg的對(duì)象。在這種情況下,原始對(duì)象將取得優(yōu)先權(quán),這與你們想要的結(jié)果有所出入。由于mpg中有3個(gè)元素而disp中有32個(gè)元素,故plot語(yǔ)句出錯(cuò)。函數(shù)attach()和detach()最好在你分析一個(gè)單獨(dú)的據(jù)框,并且不太可能有多個(gè)同名對(duì)象時(shí)使用。任何情況下,都要當(dāng)心那些告知某個(gè)對(duì)象已被屏蔽(masked)的警告。
wish
函數(shù)with()的局限性在于,賦值僅在此函數(shù)的括號(hào)內(nèi)生效,你需要?jiǎng)?chuàng)建在with()結(jié)構(gòu)以外存在的對(duì)象,使用特殊賦值符<<-替代標(biāo)準(zhǔn)賦值符(<-)即可,它可將對(duì)象保存到with()之外的全局環(huán)境中
> with(mtcars,{N<- summary(mpg)
+ keepstats <<- summary(mpg)})#賦值僅在此函數(shù)的括號(hào)內(nèi)生效
> N
Error: object'N' not found
>keepstats
Min. 1st Qu.MedianMean 3rd Qu.Max.
10.4015.4219.2020.0922.8033.90
注意:將patientID指定為R中標(biāo)記各類(lèi)打印輸出和圖形中實(shí)例名稱(chēng)所用的變量。
2.2.5因子
類(lèi)別(名義型)變量和有序類(lèi)別(有序型)變量在R中稱(chēng)為因子(factor)。
示例
> #因子
> D <- factor(diabetes)#類(lèi)別變量
> D
[1] T1 T2 T1 T2
Levels: T1 T2
>
> status <-c("poor","improved","excellent","poor")#順序變量
>
> status <- factor(status,ordered = T,levels =c("poor","improved","excellent"))
>
> status
[1] poorimprovedexcellent poor
Levels: poor < improved < excellent
數(shù)值型變量可以用levels和labels參數(shù)來(lái)編碼成因子。如果男性被編碼成1,女性被編碼成2,則以下語(yǔ)句:
示例
> sex <- c(1,2)
> sex
[1] 1 2
> sex <- factor(sex, levels=c(1, 2),labels=c("Male", "Female"))#數(shù)值型變量
> sex
[1] MaleFemale
Levels: Male Female
2.2.6列表
列表(list)是R的數(shù)據(jù)類(lèi)型中最為復(fù)雜的一種。一般來(lái)說(shuō),列表就是一些對(duì)象(或成分,component)的有序集合。
對(duì)R語(yǔ)言的學(xué)習(xí)總結(jié)分享,發(fā)現(xiàn)在自己自學(xué)方面的問(wèn)題和經(jīng)驗(yàn)
1,學(xué)習(xí)筆記缺乏一定邏輯性,日后回看的時(shí)候沒(méi)發(fā)看出清晰邏輯思路,筆記應(yīng)該本節(jié)重要內(nèi)容,實(shí)例、需要注意地方,有疑問(wèn)地方這方向進(jìn)行記錄,第一章和第二章自學(xué)筆記太混亂。
2,R語(yǔ)言學(xué)習(xí)確實(shí)枯燥,所以一定抓住高效注意力的時(shí)候進(jìn)行學(xué)習(xí),比如早上注意力明顯高于晚上,這種需要大量注意力的學(xué)習(xí)應(yīng)該反正在自己注意力高效時(shí)段。
3,學(xué)以致用,要結(jié)合實(shí)際工作需求加以練習(xí)才是掌握語(yǔ)法高效手段。
4,學(xué)習(xí)進(jìn)度還低于自己預(yù)期,過(guò)于關(guān)注點(diǎn)上的東西,不懂的可以先放一放,選過(guò)記錄之后往后看,后面可能會(huì)豁然開(kāi)朗。
5,身心疲憊時(shí)候可以聽(tīng)聽(tīng)別人講座,這種有意想不到的收益。