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)

  

 

  

posted @ 2016-12-24 20:50  gy_jerry  阅读(2302)  评论(0编辑  收藏  举报