R語言學習筆記之程序語言篇

工作空間

函數名稱 功能
getwd()/dir.create() 顯示/創建當前目錄
setwd("dir") 設置當前目錄
savehistory("file")/loadhistory("file") 保存/讀取歷史命令
save.image("file")/load("file") 保存/讀取工作空間

輸入輸出

  • 執行腳本 source("file")
  • 文本輸出 sink("file") e.g sink("output",append=TRUE,split=TRUE)
  • 輸出圖形 pdf/png/jpeg/bmp/postscript("fileName")

數據類型

數值型、字符型、邏輯型、複數型、原生型、日期類型


數據結構

  • 向量
    示例:a <- c("one", "two", "three")
    • 在一個向量中,數據類型需要一致。
    • 標量是隻含一個元素的特殊向量
    • 向量的編號從1開始。
    • 讀取一個元素 a[3],兩個元素a[c(2,3)],一串元素a[2:4]
  • 矩陣
    用法:b <- matrix(元素向量, 行號, 列號, byrow(TRUE 按行, FALSE 按列),行列名=list(行名向量,列名向量))
    • 一個矩陣中元素類型需要一致
    • 和MATLAB一樣默認按列填充
    • 讀取 b[row,col], b[1,3:4], b[2:3,3:4]
  • 數組
    用法:d <- array(元素向量,維度,維度名)
    示例:
    dim1 = c("A1","A2")
    dim2 = ...
    a <- array(1:24, c(2,3,4),list(dim1,dim2,dim3))
    • 元素類型一致
    • 先填充前兩維,按列填充
  • 數據框
    用法:e <- data.frame(col_vector1,col_vector2,...,row.names=col_vector1)row.name是示例標識符。
    示例:e <- data.frame(ID,age,type,status)

    • 數據框是個框,什麼都能往裏裝
    • 一列中類型一致
    • 讀取
      • 第一和第二列e[1:2]
      • 按名讀取e[c(”ID”,”age”)]
      • 讀取一行到向量 e$age
    • 生成列聯表 table(e$ID,e$age)
    • 數據框與搜索路徑 用前 attach(數據框名) 用完detach(數據框名) 即可直接用age 而不用寫‘e$age’
    • 如果遇到重名情況,可以使用with(e,{code})進入局部環境,如果局部環境裏創建的數據要被外部使用,用<<-替換<-,否則會出錯,誰讓R變量無法被聲明呢 ╮( ̄▽ ̄)╭
  • 因子

    • 變量可以分爲名義型和有序型,有序型變量值可以比較排序,而名義型僅僅是一個符號。
    • 有序型和名義型變量在R中被稱爲因子。
      • 函數factor()函數會將名義型變量按照字母順序與一個整型數值對應。d <- factor(d)
      • 有序型的數值對應按照字符的大小來排,例如”A”<”AC”<”B”,d <- factor(d,ordered=TRUE)
      • 手動定義排序 `d <- factor(d,order=TRUE,levels=(“C”,”B”,”A”)) 分別賦值1,2,3. 類似C中的枚舉。
  • 列表
    • 列表裏面的對象可以是向量、矩陣、數據框或者其他的列表。li <- list(title = "TITLE", age <- c(1,2,3)) 這裏輸出li,可以看到title被顯示成爲TITLE的字段名,$title,而age則沒有,這是第一處發現=號和<-賦值的不同。
    • 訪問li[[1]]li[["title"]]訪問的都是”TITLE”。

數據導入

  • 鍵盤輸入
    a <- data.frame( age=numeric(0), gender=character(0),weight=numeric(0))
    a <- edit(a)
    將彈出對話框,可以手動輸入。
    這裏寫圖片描述
  • 文本導入
    d <- read.table("student.csv",header=TRUE,sep=",",row.names="STUDENT_ID")
  • 其他
    其他的導入方式例如XML/SPSS/SAS/Excel等等都用對應的函數可以調用。

邏輯運算符

< <= > >= == != != !x x|y x&y isTRUE(x)沒有什麼特殊的地方

循環

for (var in seq) statement
while(cond) statement){}

分支

if (cond) statement1 else statement2
ifelse(cond, statement1, statement2)
switch(expr,...)

函數

myfunction <- function(arg1,arg2,...){
    statements
    return (object)
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章