本文對應《R語言實戰》前3章,因為里面大部分內容已經比較熟悉,所以在這里只是起一個索引的作用。
第1章 R語言介紹
獲取幫助函數
help(), ? |
查看函數幫助 |
example() |
使用函數示例 |
vignette() |
列出vignette文檔 |
vignette(“svmdoc”) |
打開對應文檔 |
管理工作空間
getwd() |
顯示當前工作目錄 |
setwd(“mydirectory”) |
修改當前工作目錄為mydirectory |
rm(objectlist) |
刪除對象 |
save.image(file = “myfile”) |
保存工作空間到myfile.RData |
save(objectlist, file = “myfile”) |
保存指定對象到myfile.RData |
load(file = “myfile”) |
讀取一個工作空間到當前會話中(.RData) |
輸入與輸出
source(“filename”) |
在當前會話中執行R腳本 |
sink(“filename”, append = F, split = F) |
輸出文本。append = T追加內容而不是覆蓋文件,split = T將結果同時發送到屏幕和文件 |
pdf(“filename.pdf”) |
PDF文件(以下都是圖形輸出方式) |
win.metafile(“filename.wmf”) |
Windows圖元文件 |
png(“filename.png”) |
PNG文件 |
jpeg(“filename.jpg”) |
JPEG文件 |
bmp(“filename.bmp”) |
BMP文件 |
postscript(“filename.ps”) |
PostScript文件 |
第2章 創建數據集
數據結構:標量、向量、矩陣、數組、數據框、列表
標量與向量:
標量只含一個元素,向量為多個相同模式的標量組成的一維數組,使用c()進行組合
矩陣:
相同模式元素的二維數組,通過matrix()創建
數組:
維度可以大於2,元素模式相同,通過array()創建
數據框:
不同的列可以包含不同模式的數據
選取數據框中的特定變量
patientdata$status
簡化方式:attach(), detach()或單獨使用with()
示例:
#簡化前 summary(mtcars$mpg) plot(mtcars$mpg, mtcars$disp) plot(mtcars$mpg, mtcars$wt) #簡化后 attach(mtcars) summary(mpg) plot(mpg, disp) plot(mpg, wt) detach(mtcars)
局限性:存在名稱相同的對象時,有可能出現masked的警告,原始對象為優先
with()函數示例
#with()用法 with(mtcars, { summary(mpg) plot(mpg, disp) plot(mpg, wt) })
這種方式,賦值僅為with()內的局部變量,要使內部賦值在接下來的代碼中可以用,需要使用特殊賦值符( <<- )保存到全局變量中。
#nokeepstats只在with()內可以使用,keepstats可以在全局使用 with(mtcars, { nokeepstats <- summary(mpg) keepstats <<- summary(mpg) })
選取數據框中特定實例:實例標識符
#指定標識符,用於標記各類打印輸出和圖形中實例名稱 patientdata <- data.frame(patientID, age, diabetes, status, row.names = patientID)
因子:
分為類別變量和有序類別變量。
#有序類別變量,默認排序規則為字母順序 status <- c(“Poor”, “Improved”, “Excellent”, “Poor”) status <- factor(status, ordered = TRUE) #編碼為1 = Excellent, 2 = Improved, 3 = Poor
#自定義順序 status <- factor(status, order = TRUE, levels = c(“Poor”, “Improved”, “Excellent”))
列表:
#創建列表 mylist <- list(object1, object2, …) mylist <- list(name1 = object1, name2 = object2, …) #提取元素 mylist[[1]] mylist[[“name1”]] mylist$name1
導入數據
#帶分隔符的文件 mydataframe <- read.table(file, header = FALSE, sep = “”, row.names = “name”) #默認stringAsFactors = TRUE一般需要修改 #colClasses為每一列數據指定class #更多設置信息參考幫助文檔
#Excel數據 library(RODBC) channel <- odbcConnectExcel(“myfile.xls”) mydataframe <- sqlFetch(channel, “mysheet”) odbcClose(channel) library(xlsx) workbook <- “c:/myworkbook.xlsx” mydataframe <- read.xlsx(workbook, 1) #XML數據 library(XML) #網頁抓取數據 ?readLines ?grep ?gsub library(XML) library(RCurl) #SPSS數據 library(foreign) ?read.spss library(Hmisc) ?spss.get #SAS數據 #舊版SAS使用與SPSS數據類似方法 #新版SAS可以先將數據存為.csv文件再導入 #Stata數據 library(foreign) ?read.dta #netCDF數據 library(ncdf) nc <- nc_open(“mynetCDFfile”) myarray <- get.var.ncdf(nc, myvar) #HDF5數據 library(hdf5) #訪問數據庫管理系統 #ODBC接口 library(RODBC) myconn <- odbcConnect(“mydsn”, uid = “Rob”, pwd = “password”) crimedat <- sqlFetch(myconn, Crime) pundit <- sqlQuery(myconn, “select * from Punishment”) close(myconn) #DBI相關包 library(DBI) library(RJDBC) library(RMy) library(ROracle) library(RPostgreSQL) library(RSQLite)
ODBC包主要函數
odbcConnect(dsn, uid = “”, pwd = “”) |
建立一個ODBC連接 |
sqlFetch(channel, sqltable) |
讀取表 |
sqlQuery(channel, query) |
向ODBC數據庫提交查詢並返回結果 |
sqlSave(channel, mydf, tablename = sqtable, append = FALSE) |
將數據庫寫入或更新(append = TRUE)到ODBC數據庫中的某個表中 |
sqlDrop(channel, sqtable) |
刪除ODBC數據庫中的某個表 |
close(channel) |
關閉連接 |
處理數據對象的實用函數
length(object) |
顯示對象中元素/成分的數量 |
dim(object) |
顯示某個對象的維度 |
str(object) |
顯示某個對象的結構 |
class(object) |
顯示某個對象的類或類型 |
mode(object) |
顯示某個對象的模式 |
names(object) |
顯示某對象中各成分的名稱 |
c(object1, object2, …) |
將對象合並入一個向量 |
cbind(object1, object2, …) |
按列合並對象 |
rbind(object1, object2, …) |
按行合並對象 |
object |
輸出對象 |
head(object) |
列出某個對象的開始部分 |
tail(object) |
列出某個對象的最后部分 |
ls() |
顯示當前的對象列表 |
rm(object1, object2, …) |
刪除對象 rm(list = ls())可以刪除幾乎所有對象 |
newobject <- edit(object) |
編輯對象並另存為newobject |
fix(object) |
直接編輯對象 |
第3章 圖形初階
因為總體來講,作為最終展示的作圖,往往使用ggplot2包更好一點。然而在數據分析的過程中,需要首先對數據分布進行一定了解,這就需要一些比較基礎的圖形。由於本章只是對於圖形的創建、保存、顏色、標注等進行解說,因此並不是我們關心的重點,所以我們僅僅將一些通用的方法以索引的方式羅列出來,作為參考。而作為最終展示的圖形,在后面的ggplot2包的學習中,將會進行更加詳細的闡述。
#圖形的輸出與保存 pdf(“mygraph.pdf”) plot(x, y) title(“my graph”) dev.off() #圖形參數修改 #通過par()函數修改參數,這種方式設定的參數值,在會話結束前一直有效 #生成一個可以修改的當前圖形參數列表 opar <- par(no.readonly = TRUE) #設置參數 par(lty = 2, pch = 17) #作圖 plot(dose, drugA, type = ‘b’) #還原原始設置 par(opar)
另外也可以直接在繪圖函數里設置參數鍵值對,只對當前圖形有效
符號和線條
pch |
繪制的點符號(0:25) |
cex |
繪制點大小(默認1) |
lty |
繪制線形狀(1:6) |
lwd |
繪制線寬度(默認1) |
顏色
col |
默認的繪圖顏色,若顏色向量小於繪圖數量,則循環使用 |
col.axis |
坐標軸刻度文字的顏色 |
col.lab |
坐標軸標簽名稱的顏色 |
col.main |
標題顏色 |
col.sub |
副標題顏色 |
fg |
前景色 |
bg |
背景色 |
#用於創建連續型顏色向量的函數 rainbow() heat.colors() terrain.colors() topo.colors() #多階灰度色 gray() #以上函數使用help()查詢具體使用參數
文本尺寸、圖形尺寸略
添加標題,可以在plot()函數里聲明,也可以用title()函數追加:main標題、sub副標題、xlab, ylab坐標軸標簽
設置坐標軸范圍xlim, ylim
添加坐標軸函數axis(side, at = x)
添加參考線函數abline(h = yvalues, v = xvalues)
添加圖例函數legend(location, title, legend, …)
添加文本標注函數text()向繪圖區域內部添加,mtext()向圖形邊界之一添加
數學標注:詳見help(plotmath)
圖形組合
#方法1 par(mfrow = c(nrows, ncols)) #接下來的幾幅圖排列在nrows, ncols矩陣中 #方法2 layout(matrix(c(1, 1, 2, 3)), 2, 2, byrow = TRUE) #指在2*2矩陣中,第一幅圖占據(1,1)和(1,2)第二幅(2,1)第三幅(2,2) layout(matrix(c(1, 1, 2, 3)), 2, 2, byrow = TRUE, widths = c(3, 1), heights = c(1, 2)) #各列寬度及各行高度組成的向量,即矩陣的四個部分,寬之比3:1高之比1:2
多幅圖形的精細控制:
通過par()函數里的fig參數設置多個圖形的相對位置,可以多試幾次,直到找到最合適的參數。
opar <- par(no.readonly = TRUE) #設置散點圖 par(fig = c(0, 0.8, 0, 0.8)) plot(mtcars$wt, mtcars$mpg, xlab = "Miles Per Gallon", ylab = "Car Weight") #在上方和右側添加箱線圖 par(fig = c(0, 0.8, 0.55, 1), new = TRUE) boxplot(mtcars$wt, horizontal = TRUE, axes = FALSE) par(fig = c(0.65, 1, 0, 0.8), new = TRUE) boxplot(mtcars$mpg, axes = FALSE) mtext("Enhanced Scatterplot", side = 3, outer = TRUE, line = -3) par(opar)