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