工作空間
函數名稱 | 功能 |
---|---|
getwd()/dir.create() |
顯示/創建當前目錄 |
setwd("dir") |
設置當前目錄 |
savehistory("file")/loadhistory("file") |
保存/讀取歷史命令 |
save.image("file")/load("file") |
保存/讀取工作空間 |
輸入輸出
- 執行腳本
source("file")
- 文本輸出
sink("file")
e.gsink("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)
}