R語言實戰(一)介紹、數據集與圖形初階


本文對應《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)

  

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM