1 / 92

R Programming Language R 程式語言

R Programming Language R 程式語言. 林 建 甫 C.F. Jeff Lin, MD. PhD. 台 北 大 學 統 計 系 助 理 教 授 台 北 榮 民 總 醫 院 生 物 統 計 顧 問 美 國 密 西 根 大 學 生 物 統 計 博 士. R: 物件導向程式語言 R as Objective-Oriented Language. R: 基本 (R Basics). 物件命名與指派 (Naming and Assign) 變數類型 ( Type of Variables) 缺失值 (Missing Values)

rubyw
Download Presentation

R Programming Language R 程式語言

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. R Programming LanguageR 程式語言 林 建 甫 C.F. Jeff Lin, MD. PhD. 台 北 大 學 統 計 系 助 理 教 授 台 北 榮 民 總 醫 院 生 物 統 計 顧 問 美 國 密 西 根 大 學 生 物 統 計 博 士 Jeff Lin, MD. PhD.

  2. R: 物件導向程式語言R as Objective-Oriented Language Jeff Lin, MD. PhD.

  3. R: 基本 (R Basics) • 物件命名與指派 (Naming and Assign) • 變數類型 (Type of Variables) • 缺失值 (Missing Values) • 資料輸入與指派 (Assignment and Input Data) • 函數 (Functions) • 工作路徑 (Workspace) • 歷史紀錄 (History) Jeff Lin, MD. PhD.

  4. 物件命名 Naming Convention • 必須以英文字母起始 (A-Z 或 a-z) • 中間可以任何文字與數字, 點 (periods) “.” • 大小寫有差別 • mydata與 MyData 不同 • 不可使用下線 (do not use use underscore “_”) Jeff Lin, MD. PhD.

  5. 物件指派 <- 指派 =(避免使用) > xyz.vector <-c(1, 2, 3) Jeff Lin, MD. PhD.

  6. 若鍵入 “return”, 而 R 出現 “+” , 表示輸入指令未完成, 若查不出錯誤處, 可議連續鍵入 “return”, 直到 R 出現 “>”符號. 如此再重新輸入 R 指令或程式. > sqrt( + + ))))) Error in parse(text = txt): Syntax error: No opening parenthesis, before ")" at this point: sqrt( )) Dumped > sqrt(100) 未完成的指令或程式 R 出現 “+” Jeff Lin, MD. PhD.

  7. 物件 Objects • 物件名稱 (names) • 物件種類 (Type of Variables): • 向量, 因子, 陣列, 矩陣, 資料框架, 時間序列, 列表. (vector, factor, array, matrix, data.frame, ts, list) • 屬性 (attributes) • 模式 (mode): 邏輯, 整數, 倍精準度, 單精準度, 複數, 文字. (numeric, character, complex, logical) • 長度 (Length):與物件的模式有關 • 物件產生 (creation): 指派數值或空物件 Jeff Lin, MD. PhD.

  8. 基本模式變數命名與指派 > a <- 49 > sqrt(a) [1] 7 > b <- "The dog ate my homework" > sub("dog","cat",b) [1] "The cat ate my homework" > x <- (1+1==3) > x [1] FALSE > as.character(b) [1] "FALSE" 數值 numeric 文字與字串character string 邏輯logical Jeff Lin, MD. PhD.

  9. Logical (邏輯) > x <- T; y <- F > x; y [1] TRUE [1] FALSE Numerical (數值) > a <- 5; b <- sqrt(2) > a; b [1] 5 [1] 1.414214 Character 文字與字串 > a <- "1"; b <- 1 > a; b [1] "1" [1] 1 > a <- "character" > b <- "a"; x <- a > a; b; x [1] "character" [1] "a" [1] "character" 基本模式變數命名與指派 Jeff Lin, MD. PhD.

  10. 物件指派 Assignment “<-” used to indicate assignment > x<-c(1,2,3,4,5,6,7) > x<-c(1:7) > x<-1:4 Jeff Lin, MD. PhD.

  11. Jeff Lin, MD. PhD.

  12. 算數操作 (Arithmetic Operator) Simple operations • Add: > 10 + 20 • Multiply: > 10 * 20 • Divide: > 10/20 • Raise to a power: > 10 ** 20 • Modulo: > 10%%20 • Integer division: > 10%/%4 Jeff Lin, MD. PhD.

  13. R: 邏輯操作 與 關係比較操作 • == Equal to • != Not equal to • < Less than • > Greater than • <= Less than or equal to • >= Greater than or equal to • is.na(x) Missing? • & Logical AND • | Logical OR • ! Logical NOT Jeff Lin, MD. PhD.

  14. 缺失值 NA, NaN, 與 Null • NA或 “Not Available” • 可用在許多模式 (modes) – character, numeric, etc. • NaN或 “Not a Number” • 只用在數值模式 (numeric modes) • NULL 列表 (lists) 的長度為 0 (zero length) Jeff Lin, MD. PhD.

  15. 缺失值 Missing Values, NA, NaN, 與 Null • NA or “Not Available” • Applies to many modes – character, numeric, etc. • NaN or “Not a Number” • Applies only to numeric modes • NULL • Lists with zero length Jeff Lin, MD. PhD.

  16. 缺失值 Missing Values • NA “not available” > x <- c(1, 2, 3, NA) > x + 3 [1] 4 5 6 NA • 非數字 “Not a number” > log(c(0, 1, 2)) [1] -Inf 0.0000000 0.6931472 > 0/0 [1] NaN Jeff Lin, MD. PhD.

  17. R: 缺失值 Missing Values • NA或 “Not Available” • NA 不是 0 • NA 不是 ““(空格, 或 空字串) • NA不是 FALSE • 任何與 NA 的計算, 可能或不可能產生 NA • > 1+NA [1] NA > max(c(NA, 4, 7)) [1] NA > max(c(NA, 4, 7), na.rm=T) [1] 7 Jeff Lin, MD. PhD.

  18. R: 統計分析常見物件型態Common Object Types for Statistics Jeff Lin, MD. PhD.

  19. Types of Objects • 向量 Vector • 矩陣 Matrix • 陣列 Array • 列表 List • 因子 Factor • 時間序列 Time series • 資料框架 Data frame • 函式 Function > typeof(物件名稱) 可已回傳物件型態 Jeff Lin, MD. PhD.

  20. Mode 物件結構 (模式) • 模式 Mode • 原型模式 Atomic Mode: logical, numeric, complex 或 character • 遞迴型 Recursive Mode list, graphics, function, expression, call .. > mode()指令可以用來查看物件的模式 Jeff Lin, MD. PhD.

  21. 物件長度 (Length) • 長度 Length • vector: number of elements • matrix, array: product of dimensions • list: number of components • data frame: number of columns Jeff Lin, MD. PhD.

  22. 物件屬性 (Attribute) • 屬性Attributes • 列位名 (row name), • 欄位名 (column name), • 維度 (dimension). > row.names() > names() > str() Jeff Lin, MD. PhD.

  23. 物件類別 (Class) • 類別 Class • 物件的類別方便 {R} 進行程式寫作. • 類別可以讓 {R} 得知物件的特殊性, 使用特別的方法進行操作; 例如, 有一個物件, 其類別是資料框架, 則此物件會以特別形式列印. Jeff Lin, MD. PhD.

  24. 向量 Vector • 指包含相同 ``模式'' 的元素 (element) 組成序列. • 主要有 6 種基本模式 (mode) • logical, integer, double, single, complex, and character. • (邏輯, 整數, 倍精準度, 單精準度, 複數, 文字). • 向量是具有相同基本類型的元素序列, • 大體相當於其他語言中的 1-維度數列, • 在 R 中, 單一數值 ( scalar) 也可看成是長度為 1 的向量. Jeff Lin, MD. PhD.

  25. 向量 Vector > a <- c(1,2,3) > a*2 [1] 2 4 6 向量的產生最常用辦法是使用函式 c(),它把若干個數值或字串組合為一個向量, Jeff Lin, MD. PhD.

  26. 向量運算操作 • 算數操作 (arithmetic operator) 符號包含 • +, -, *, /, ^, %%, %/%, %*%, %o%, %x% 等. • 通常其含意是對向量的每一個元素進行運算的 ``單元運算子'' (unary) 或 ``二元運算子'' (binary),如同一般算數運用在向量. • 向運有 “長度”, 但不具有 “維度”. Jeff Lin, MD. PhD.

  27. 向量 Vectors > Mydata <- c(2,3.5,-0.2) # > Colors <- c(“Red”,“Green”,“Red”) # 文字 > x1 <- 25:30 > x1 [1] 25 26 27 28 29 30 # 數字序列 > Colors[2] [1] “Green” # 單一元素 > x1[3:5] [1] 27 28 29#多各元素 Jeff Lin, MD. PhD.

  28. Jeff Lin, MD. PhD.

  29. Jeff Lin, MD. PhD.

  30. Jeff Lin, MD. PhD.

  31. 向量 Vectors > x <- c(5.2, 1.7, 6.3) > log(x) [1] 1.6486586 0.5306283 1.8405496 > y <- 1:5 > z <- seq(1, 1.4, by = 0.1) > y + z [1] 2.0 3.1 4.2 5.3 6.4 > length(y) [1] 5 > mean(y + z) [1] 4.2 Jeff Lin, MD. PhD.

  32. Jeff Lin, MD. PhD.

  33. 邏輯檢測 抽出某一元素 刪除元素 向量運算操作 > Mydata [1] 2 3.5 -0.2 > Mydata > 0 [1] TRUE TRUE FALSE > Mydata[Mydata>0] [1] 2 3.5 > Mydata[-c(1,3)] [1] 3.5 Jeff Lin, MD. PhD.

  34. 向量運算操作 > x <- c(5,-2,3,-7) > y <- c(1,2,3,4)*10 # 對所有元素操作 > y [1] 10 20 30 40 > sort(x) # 重新排序 [1] -7 -2 3 5 > order(x) [1] 4 2 3 1 # 排順序後的位置 > y[order(x)] [1] 40 20 30 10 # > rev(x) # 反向 [1] -7 3 -2 5 Jeff Lin, MD. PhD.

  35. c() & rev() > c(1,3,5,7) [1] 1 3 5 7 > rev(c(1,3,5,7)) [1] 7 5 3 1 Jeff Lin, MD. PhD.

  36. length(), mode() & names() > x<-c(1,3,5,7) > length(x) [1] 4 > mode(x) [1] "numeric" > names(x) NULL Jeff Lin, MD. PhD.

  37. seq() • seq() 產生數字序列 > seq(1:5) [1] 1 2 3 4 5 > seq(5,1,by=-1) [1] 5 4 3 2 1 > seq(5) [1] 1 2 3 4 5 Jeff Lin, MD. PhD.

  38. seq() > 1.1:5 [1] 1.1 2.1 3.1 4.1 > 4:-5 [1] 4 3 2 1 0 -1 -2 -3 -4 -5 > seq(-1,2,0.5) [1] -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 > seq(1,by=0.5,length=5) [1] 1.0 1.5 2.0 2.5 3.0 Jeff Lin, MD. PhD.

  39. rep() • rep() replicates elements > rep(1,5) [1] 1 1 1 1 1 > rep(1:2,3) [1] 1 2 1 2 1 2 > rep(1:2,each=3) [1] 1 1 1 2 2 2 > rep(1:2,each=3,len=4) [1] 1 1 1 2 > rep(1:2,each=3,len=7) [1] 1 1 1 2 2 2 1 > rep(1:2,each=3,time=2) [1] 1 1 1 2 2 2 1 1 1 2 2 2 Jeff Lin, MD. PhD.

  40. sort() & rank() > x<-c(8,6,9,7) > sort(x) [1] 6 7 8 9 > rank(x) [1] 3 1 4 2 > rank(x)[1] [1] 3 > x[rank(x) = =1] [1] 6 > x[rank(x)] [1] 9 8 7 6 Jeff Lin, MD. PhD.

  41. rank() & order() > x<-c(8,6,9,7) > order(x) [1] 2 4 1 3 > rank(x) [1] 3 1 4 2 > x[order(x)] [1] 6 7 8 9 > x[rank(x)] [1] 9 8 7 6 Jeff Lin, MD. PhD.

  42. 矩陣 Matrix • 矩陣由包含相同的元素組成的 2-維 (2-dimension) 資料物件 • 可由 matrix()產生 > x<-matrix(data=0,nr=2,nc=2) > x<-matrix(0,2,2) Jeff Lin, MD. PhD.

  43. 矩陣下標 > x <- c("a", "b", "c", "d", "e", "f", "g", "h") > x[1] > x[3:5] > x[-(3:5)] > x[c(T, F, T, F, T, F, T, F)] > x[x <= "d"] > m[,2] > m[3,] Jeff Lin, MD. PhD.

  44. Generate a Matrix > xmat<-matrix(1:12,nrow=3,byrow=T) > xmat [,1] [,2] [,3] [,4] [1,] 1 2 3 4 [2,] 5 6 7 8 [3,] 9 10 11 12 > length(xmat) [1] 12 > dim(xmat) [1] 3 4 > mode(xmat) [1] "numeric" > names(xmat) NULL > dimnames(xmat) NULL Jeff Lin, MD. PhD.

  45. Generate a Matrix > matrix(0,3,3) [,1] [,2] [,3] [1,] 0 0 0 [2,] 0 0 0 [3,] 0 0 0 Jeff Lin, MD. PhD.

  46. Generate a Matrix > dimnames(xmat)<-list(c("A","B","C"), c("W","X","Y","Z")) > dimnames(xmat) [[1]] [1] "A" "B" "C" [[2]] [1] "W" "X" "Y" "Z" > xmat W X Y Z A 1 2 3 4 B 5 6 7 8 C 9 10 11 12 Jeff Lin, MD. PhD.

  47. Diagonal Element of a Matrix > m <- matrix(1:12, 4, byrow = T) > m [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 [4,] 10 11 12 > diag(m) [1] 1 5 9 Jeff Lin, MD. PhD.

  48. Diagonal Element of a Matrix > diag(k) [,1] [,2] [,3] [1,] 1 0 0 [2,] 0 1 0 [3,] 0 0 1 Jeff Lin, MD. PhD.

  49. Inverse of Matrices > m<-matrix(c(1,3,5,,9,11,13,15,19,21),3,byrow=T) > m [,1] [,2] [,3] [1,] 1 3 5 [2,] 9 11 13 [3,] 15 19 21 > solve(m) [,1] [,2] [,3] [1,] -0.5000 1.0000 -0.5 [2,] 0.1875 -1.6875 1.0 [3,] 0.1875 0.8125 -0.5 Jeff Lin, MD. PhD.

  50. rbind() & cbind() > x<-c(1,2,3) > y<-matrix(0,3,3) > rbind(y,x) [,1] [,2] [,3] 0 0 0 0 0 0 0 0 0 x 1 2 3 > cbind(y,x) x [1,] 0 0 0 1 [2,] 0 0 0 2 [3,] 0 0 0 3 Jeff Lin, MD. PhD.

More Related