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)

R语言实战(一)介绍、数据集与图形初阶的更多相关文章
- R语言实战(三)基本图形与基本统计分析
		
本文对应<R语言实战>第6章:基本图形:第7章:基本统计分析 =============================================================== ...
 - [读书笔记] R语言实战 (六) 基本图形方法
		
1. 条形图 barplot() #载入vcd包 library(vcd) #table函数提取各个维度计数 counts <- table(Arthritis$Improved) count ...
 - R语言实战读书笔记(六)基本图形
		
#安装vcd包,数据集在vcd包中 library(vcd) counts <- table(Arthritis$Improved)counts # 垂直barplot(counts, main ...
 - R语言实战(七)图形进阶
		
本文对应<R语言实战>第11章:中级绘图:第16章:高级图形进阶 基础图形一章,侧重展示单类别型或连续型变量的分布情况:中级绘图一章,侧重展示双变量间关系(二元关系)和多变量间关系(多元关 ...
 - R语言实战(四)回归
		
本文对应<R语言实战>第8章:回归 回归是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...
 - R语言实战(第二版)-part 1笔记
		
说明: 1.本笔记对<R语言实战>一书有选择性的进行记录,仅用于个人的查漏补缺 2.将完全掌握的以及无实战需求的知识点略去 3.代码直接在Rsudio中运行学习 R语言实战(第二版) pa ...
 - R 语言实战-Part 5-1笔记
		
R 语言实战(第二版) part 5-1 技能拓展 ----------第19章 使用ggplot2进行高级绘图------------------------- #R的四种图形系统: #①base: ...
 - R语言实战(二)数据管理
		
本文对应<R语言实战>第4章:基本数据管理:第5章:高级数据管理 创建新变量 #建议采用transform()函数 mydata <- transform(mydata, sumx ...
 - R语言实战
		
教材目录 第一部分 入门 第一章 R语言介绍 第二章 创建数据集 第三章 图形初阶 第四章 基本数据管理 第五章 高级数据管理 第二部分 基本方法 第六章 基本图形 第七章 基本统计方法 第三部分 中 ...
 
随机推荐
- SSH框架使用中存在的诡异异常
			
背景 相信大多数人目前都在使用Spring + Struts2/SpringMVC + Hibernate来构建项目的整体架构,但是在使用中经藏会遇到一些诡异的问题,不知道如果解决,今天我遇到了一个非 ...
 - 【转】安装mysql 出现:Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
			
来源:http://blog.csdn.net/dapeng0112/article/details/37053407 本来初始化配置是这样的: scripts/mysql_install_db -- ...
 - [WCF]DomainServices客户端操作异常处理
			
作为个人备忘,不做排版.此扩展函数用于DomainServices的Load及SubmitChanges时处理Error信息,包括验证消息.实体冲突. public static string ToE ...
 - JSON对象长度和遍历方法
			
摘自博客 (http://caibaojian.com/json-length.html) 原文链接:http://caibaojian.com/json-length.html JSON数组有长度j ...
 - 点击区域外隐藏该区域,event.stopPropagation()
			
event.stopPropagation() Description: Prevents the event from bubbling up the DOM tree, preventing an ...
 - css3样式控制(鼠标滑过 显示标注信息)
			
<div class="item"> <h1>A</h1> <div class="tooltip"> < ...
 - Mvc 模块化开发
			
在Mvc中,标准的模块化开发方式是使用Areas,每一个Area都可以注册自己的路由,使用自己的控件器与视图.但是在具体使用上它有如下两个限制 1.必须把视图文件放到主项目的Areas文件夹下才能生效 ...
 - 逗比的wifi开关
			
笔记本会出现网卡开机不能用的现象.具体表现为:网卡没有禁用,但是搜索不到无线信号.适配器选项框里面选中无线网卡,然后诊断这个链接提示启用无线功能.然后我点击应用此修复就能搜索到无线信号了.问题是,电脑 ...
 - 《编写可维护的JavaScript》——JavaScript编码规范(二)
			
昨天是我偶像生日,现在整个人都还好兴奋啊O(∩_∩)O~ 闲话少说,让我先发篇随笔留念一下^_^ ////////////////////////////////正文分割线///////////// ...
 - hdu5737(2016多校联赛第2场D)
			
题意:给2组数据a和b数组,每次有2种操作:(+,l,r,x)把a数组第l个到第r个元素全置为x,(?,l,r)查询[l,r]之间哪些位置满足a[i]>=b[i](i>=l &&a ...