• 写在前面
  • 主要内容
  • 数学与统计函数
    • 数据的标准化
    • 概率函数
  • 生成服从正态分布的伪随机数
  • 字符串处理函数
  • 应用于矩阵和数据框的函数
  • 图形绘制
    • 直方图的绘制(hist)
    • 核密度图的绘制
    • 箱线图
    • 经验分布图
    • 正态QQ图
    • 茎叶图
  • 高水平作图函数与低水平作图函数
    • 高水平作图函数
    • 高水平绘图中的命令
    • 低水平作图函数

写在前面

最近学习R语言,知识点比较多,所以在此总结一下。这部分主要说下R语言的绘图以及一些处理函数,命令偏数学的多一些,毕竟R语言一开始就是为了统计设计的嘛。

P.S. 由于我使用了R Markdown来写R程序,导致代码下面的两个"##"后面为命令运行结果。

主要内容

  1. 常见的数学函数以及统计函数;

  2. 统计绘图函数(直方图、核密度图、箱线图、正态QQ图、茎叶图、经验分布图等)

  3. 高水平绘图函数(plot、coplot、pairs、qqnorm、contour、persp等)

  4. 高水平绘图命令(add, axes, log, type等)

  5. 低水平绘图函数与参数设置

数学与统计函数

abs(-3)
## [1] 3
sqrt(9)
## [1] 3
ceiling(5/3)
## [1] 2
floor(5/3)
## [1] 1
round(4.55)
## [1] 5
log(exp(10))
## [1] 10
sin(pi/2)
## [1] 1
cos(pi/2)
## [1] 6.123032e-17
x <- c(1,2,3,3)
mean(x) # 等价于meanx <- sum(x)/length(x); meanx
## [1] 2.25
median(x)
## [1] 2.5
sd(x)
## [1] 0.9574271
var(x)
## [1] 0.9166667
min(x)
## [1] 1
max(x)
## [1] 3

数据的标准化

x <- c(1,3,5,4)
scale(x)
##           [,1]
## [1,] -1.317465
## [2,] -0.146385
## [3,]  1.024695
## [4,]  0.439155
## attr(,"scaled:center")
## [1] 3.25
## attr(,"scaled:scale")
## [1] 1.707825

概率函数

x <- pretty(c(-3, 3), 30); x
##  [1] -3.0 -2.8 -2.6 -2.4 -2.2 -2.0 -1.8 -1.6 -1.4 -1.2 -1.0 -0.8 -0.6 -0.4 -0.2
## [16]  0.0  0.2  0.4  0.6  0.8  1.0  1.2  1.4  1.6  1.8  2.0  2.2  2.4  2.6  2.8
## [31]  3.0
y <- dnorm(x)
plot(x, y)
rnorm(50, mean = 20, sd = 8)
[1] 11.233327 22.000808 10.066406 19.273047 21.771780 34.621389 21.706101[8] 21.934236 19.608269 16.698233 13.597833 22.653223 20.194896 25.730459[15] 10.912291 18.101390 12.456593 21.678788  7.763024 27.193593 24.136049[22] 31.140113 22.691629 18.891392 18.009354 28.952892  8.203124 16.267587[29] 21.039319 26.668597 15.264060 15.474431 28.440294 14.970583 26.289378[36] 18.113167 11.175129  2.085909 26.948591 12.651352 17.815405 13.490284[43] 21.128309 41.396762 32.838635 14.187705 29.128805 16.050802 14.680583[50] 31.128813

生成服从正态分布的伪随机数

runif(5)
## [1] 0.6973212 0.8353123 0.1633793 0.7737247 0.3019795
# 设定随机数种子
set.seed(12)

字符串处理函数

# 统计字符串中的字符数
nchar("abcde")
## [1] 5
# 提取字符串(生成子字符串)
substr("abcde", 3, 5)
## [1] "cde"
# 字符串的查找
grep("a", c("a", "c", "b", "a"))
## [1] 1 4
# 字符串的替换
sub("a", "A", "abcde")
## [1] "Abcde"
# 字符串的分割
strsplit("abcde", "c")
## [1] "ab" "de"
strsplit("abcde", "") # 分隔为每一个字符
## [1] "a" "b" "c" "d" "e"
# 字符串的合并
paste("Today is", "Tuesday.")
## [1] "Today is Tuesday."
# 大小写转换函数
toupper("abc")
## [1] "ABC"
tolower("ABc")
## [1] "abc"

应用于矩阵和数据框的函数

b <- matrix(runif(12), nrow=3)
# 处理矩阵的函数
log(b) # 对矩阵的每个元素取自然对数
##             [,1]      [,2]       [,3]       [,4]
## [1,] -2.66843174 -1.311625 -1.7215713 -4.7885131
## [2,] -0.20116780 -1.775799 -0.4436883 -0.9347165
## [3,] -0.05909021 -3.384469 -3.7775907 -0.2059417
mean(b) # 对矩阵所有元素求平均
## [1] 0.3633845
# apply函数(按维度)处理矩阵
apply(b, 1, mean)
## [1] 0.1314632 0.5053715 0.4533189
# lapply函数,对列表进行处理,得到列表每个成分的处理结果
x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE,FALSE,FALSE,TRUE))
lapply(x, mean) # 里面的逻辑值TRUE默认为1,FALSE默认为0
## $a
## [1] 5.5
##
## $beta
## [1] 4.535125
##
## $logic
## [1] 0.5

图形绘制

直方图的绘制(hist)

用于表示频数的分布

# 基本的直方图绘制
x <- mtcars$mpg; x
##  [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4
## [16] 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7
## [31] 15.0 21.4
hist(x)
# 参数的设置, breaks表示分成的组数,默认y轴表示频数
hist(x, breaks = 12, col = "red", xlab = "Miles Per Callon")
# freq=F 设置y轴表示概率密度
hist(x, freq = F, breaks = 12, col = "green",xlab = "Miles Per Callon")
# 轴须图绘制
rug(jitter(x)) # 添加噪声
lines(density(x), col = "red", lwd = 2) # 频率变化情况

核密度图的绘制

观察连续型变量的分布的工具
x轴展现的值,y轴表示值在所有数据中出现的密度(概率)情况

x <- density(mtcars$mpg); x
##
## Call:
##  density.default(x = mtcars$mpg)
##
## Data: mtcars$mpg (32 obs.);  Bandwidth 'bw' = 2.477
##
##        x               y
##  Min.   : 2.97   Min.   :6.481e-05
##  1st Qu.:12.56   1st Qu.:5.461e-03
##  Median :22.15   Median :1.926e-02
##  Mean   :22.15   Mean   :2.604e-02
##  3rd Qu.:31.74   3rd Qu.:4.530e-02
##  Max.   :41.33   Max.   :6.795e-02
plot(x)
attach(mtcars)
library(sm)
sm.density.compare(mpg, cyl, xlab = "Miles Per Gallon")

箱线图

boxplot(mtcars$mpg, main = "Box Plot", ylab = "Miles per gallon")
boxplot(mpg~cyl, data=mtcars, main = "Box Plot", xlab = "Number of Cylinders", ylab = "Miles per gallon")

经验分布图

适合连续型分布的场合

w <- c(75.0, 64.0, 47.4, 66.9, 62.2, 62.2, 58.7, 63.5,
66.6, 64.0, 57.0, 69.0, 56.9, 50.0, 72.0); w
##  [1] 75.0 64.0 47.4 66.9 62.2 62.2 58.7 63.5 66.6 64.0 57.0 69.0 56.9 50.0 72.0
# 五数总括,计算数据中的两个最值与三个分位数
fivenum(w)
## [1] 47.40 57.85 63.50 66.75 75.00
# 经验分布图的绘制
ecdf(w) # 计算由经验分布函数得到的数值型向量
## Empirical CDF
## Call: ecdf(w)
##  x[1:13] =   47.4,     50,   56.9,  ...,     72,     75
plot(ecdf(w),verticals = TRUE, do.p = TRUE)
x <- 44:78
lines(x, pnorm(x, mean(w), sd(w)))

正态QQ图

正态分布的分布函数的反函数,为0-1上的均匀分布

w <- c(75.0, 64.0, 47.4, 66.9, 62.2, 62.2, 58.7, 63.5,
66.6, 64.0, 57.0, 69.0, 56.9, 50.0, 72.0); w
##  [1] 75.0 64.0 47.4 66.9 62.2 62.2 58.7 63.5 66.6 64.0 57.0 69.0 56.9 50.0 72.0
qqnorm(w)
qqline(w)

茎叶图

x<-c(25, 45, 50, 54, 55, 61, 64, 68, 72, 75, 75,
78, 79, 81, 83, 84, 84, 84, 85, 86, 86, 86,
87, 89, 89, 89, 90, 91, 91, 92, 100); x
##  [1]  25  45  50  54  55  61  64  68  72  75  75  78  79  81  83  84  84  84  85
## [20]  86  86  86  87  89  89  89  90  91  91  92 100
stem(x)
##
##   The decimal point is 1 digit(s) to the right of the |
##
##    2 | 5
##    3 |
##    4 | 5
##    5 | 045
##    6 | 148
##    7 | 25589
##    8 | 1344456667999
##    9 | 0112
##   10 | 0

高水平作图函数与低水平作图函数

高水平作图函数有:plot(), coplot(), pairs(), qqnorm(), qqline(), hist(), contour()等,可以产生图形,定制参数;
而低水平作图函数自身无法生成图形,只能在高水平作图函数基础上增加新的图形。

高水平作图函数

  1. plot()函数
    绘制数据的散点图、曲线图等。

有四种绘图方法:两向量的散点图、时间序列散点图(单向量关于下标的散点图复数向量的散点图)、因子的箱线图、不同指标构成的散点图(回归诊断图等)。

x <- c(1,3,2,3,3,5);
y <- c(3,2,3,4,5,6);
z <- complex(re = x, im = y);
plot(x)
plot(x, y)
plot(z)
# 因子的箱线图
y<-c(1600, 1610, 1650, 1680, 1700, 1700, 1780, 1500, 1640,
1400, 1700, 1750, 1640, 1550, 1600, 1620, 1640, 1600,
1740, 1800, 1510, 1520, 1530, 1570, 1640, 1600)
f<-factor(c(rep(1,7),rep(2,5), rep(3,8), rep(4,6)))
plot(f,y)
# 数据框的指标构成的散点图
df<-data.frame(
Age=c(13, 13, 14, 12, 12, 15, 11, 15, 14, 14, 14,15, 12, 13, 12, 16, 12, 11, 15 ),
Height=c(56.5, 65.3, 64.3, 56.3, 59.8, 66.5, 51.3,62.5, 62.8, 69.0, 63.5, 67.0, 57.3, 62.5,59.0, 72.0, 64.8, 57.5, 66.5),
Weight=c( 84.0, 98.0, 90.0, 77.0, 84.5, 112.0, 50.5, 112.5, 102.5, 112.5, 102.5, 133.0, 83.0, 84.0, 99.5, 150.0, 128.0, 85.0, 112.0))
plot(df)
attach(df)
# 身高与年龄指标的散点图
plot(~Age+Height)
# 体重分别与年龄和身高的散点图
plot(Weight~Age+Height)
  1. 绘制多变量数据的函数

pairs()函数,数据为矩阵或数据框时绘制矩阵关于其各列的散布图
coplot()函数,绘制更细致的散点图,也可以表示各列指标的关系

# 与plot()函数的结果一致,为箱线图
pairs(df)
# 绘制指标散点图,下面是按年龄划分的体重与身高的散点图
coplot(Weight ~ Height | Age)
  1. qqnorm(), hist(), dotchart(), contour(), image(), persp()

dotchart()函数绘制数据x的点图

# Virginia州在1940年的人口死亡率点图
dotchart(VADeaths, main = "Death Rates in Virginia - 1940")
dotchart(t(VADeaths), main = "Death Rates in Virginia - 1940")

contour(), image(), persp()函数绘制山区的等高线图

x <- seq(0,2800, 400); y <- seq(0,2400,400);
z <- c(1180,1320,1450,1420,1400,1300,700,900,1230,1390,1500,1500,1400,900,1100,1060,1270,1500,1200,1100,1350,1450,1200,1150,1370,1500,1200,1100,1550,1600,1550,1380,1460,1500,1550,1600,1550,1600,1600,1600,1450,1480,1500,1550,1510,1430,1300,1200,1430,1450,1470,1320,1280,1200,1080,940)
Z <- matrix(z, nrow = 8)
# 绘制image图
image(x, y, Z)
# 绘制等高线图
contour(x, y, Z, levels = seq(min(z), max(z), by = 50))
# 绘制3D曲面
persp(x, y, Z, theta=30, phi=45, expand=.3)

高水平绘图中的命令

  1. 图中的逻辑命令

原图上添加新图:add=T, 默认为F,即直接替换原图
显示坐标轴:axes=F, 默认为T,即显示坐标轴

contour(x, y, Z)
contour(x, y, Z, levels = seq(min(z), max(z), by = 80), col=5, add=T)
contour(x, y, Z, levels = seq(min(z), max(z), by = 50), axes=F)
  1. 数据取对数

对x轴取对数:log="x"
对y轴取对数:log="y"
对x和y轴同时取对数:log="xy"

x1 <- 1:10; x2 <- 4:13;
plot(x1, x2, log="x")
plot(x1, x2, log="xy", col=3)
  1. type命令
    设定绘制散点图的参数
    默认:type="p"
    实线图:type="l"
    点被实线连接(不穿过点):type="b"
    实线穿过所有的点:type="o"
    通过x轴作垂线:type="h"
    绘制阶梯型曲线:type="s"
    不绘制任何的点和曲线:type="n"
x1 <- 1:10; x2 <- 4:13;
plot(x1, x2, type = "s")
  1. 其他绘图时的命令

pch:设定绘图时的符号
cex:设定符号的大小(相对于图形的大小, 数值表示)
lty:设定线形
lwd:设定线宽
xlab(ylab):轴标题
main:主标题
sub:子标题

x1 <- 1:10; x2 <- 4:13;
plot(x1, x2, pch=12, cex=3, lty=2, lwd=2, col="red", xlab="x轴", ylab="y轴", main="直线", sub="小线")

低水平作图函数

points():加点
lines():连线
text():在图上的点处添加标记
abline():在图上加直线,abline(a, b)表示绘制y=bx+ay=bx+ay=bx+a的直线,h=yv=x分别表示平行于坐标轴的直线
title(main="", sub=""):在图上添加标记、说明或其他内容
axis(side):side的1、2、3、4表示下、左、上、右
legend(title, location):添加图例

x <- 1:10; y <- 4:13;
plot(x, y)
xp <- c(8, 3, 4); yp <- c(9, 10, 5);
points(xp, yp, pch=16, col="green")
lines(xp, yp, pch=16, col="blue")
text(x, y)
abline(3,4)
legend("topleft", inset = .01, "图例", c("A", "B"), lty=c(1, 2), pch=c(15, 17))

R语言学习笔记(二)处理函数与基本图形绘制相关推荐

  1. Go 语言学习笔记(二):函数

    目录 函数 函数定义 函数签名和匿名函数 defer 闭包 概念 panic 和 recover 函数 函数是程序执行的一个基本语法结构,Go 语言的很多特性是基于函数这个基础实现的,比如命名类型的方 ...

  2. R语言学习笔记之transform函数

    transform函数 在console终端中敲入:?transform Transform an Object,for Example a Data Frame Description transf ...

  3. 【R语言学习笔记】rep函数

    rep(x, time = , length = , each = ,) examples: > rep(1:4, 2) [1] 1 2 3 4 1 2 3 4 > rep(1:4, ea ...

  4. R语言学习笔记 -- 【par()函数】篇-《R作图-现代统计图形》

    注:参考书籍<R作图–现代统计图形>谢益辉 par()函数的特点: par()函数可以用来设置或者获取图形参数. 函数par()可以全局设置图形参数,而在具体作图函数plot() 或 li ...

  5. R语言学习笔记之str函数

    str函数 即structure,紧凑的显示对象内部结构,即对象里有什么. 例如:当我们head数据的时候,若某列内容太多,则不会显示出来,而用str函数,便可在窗口中逐行显示数据中列的内容. 如下图 ...

  6. R语言学习笔记1(hist()函数里有关于breaks参数的使用)

    1.hist(x,breaks=50,col="green",border="red")                       效果图如下 breaks等 ...

  7. r语言c函数怎么用,R语言学习笔记——C#中如何使用R语言setwd()函数

    在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//") > setwd("e:\桌面\") > ...

  8. R语言学习笔记(1~3)

    R语言学习笔记(1~3) 一.R语言介绍 x <- rnorm(5) 创建了一个名为x的向量对象,它包含5个来自标准正态分布的随机偏差. 1.1 注释 由符号#开头. #函数c()以向量的形式输 ...

  9. R语言学习笔记——入门篇:第一章-R语言介绍

    R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...

  10. R语言学习笔记——高级篇:第十四章-主成分分析和因子分析

    R语言 R语言学习笔记--高级篇:第十四章-主成分分析和因子分析 文章目录 R语言 前言 一.R中的主成分和因子分析 二.主成分分析 2.1.判断主成分的个数 2.2.提取主成分 2.3.主成分旋转 ...

最新文章

  1. Python List 列表list()方法
  2. 收藏 | GPU多卡并行训练总结
  3. 浅谈promise用es5实现
  4. (转载)JavaScript一些实用技巧(http://it.chinawin.net/softwaredev/article-261f.html)
  5. 3月6日云栖精选夜读:如何实现32.5万笔/秒的交易峰值?阿里交易系统TMF2.0技术揭秘...
  6. 264,avs重要的变量:
  7. Windows Server 2008搭建域环境---安装活动目录
  8. MNIST机器学习入门(二)
  9. 自定义注解+AOP,优雅的打印方法接受和返回的参数内容
  10. 苹果激活锁功能降低iPhone盗窃案发案率
  11. r语言 svycoxph_R语言之生信⑦Cox比例风险模型(单因素)
  12. 图数据库初探——6. Nebula Graph安装和简单使用
  13. CMake mingw 编译glm
  14. 每一个人都应该学习电脑编程,因为它会教你如何思考
  15. stm32 移植 FreeRTOS
  16. 必做作业三_ShareX结构化原型设计
  17. 怎么彻底处理windows下遇到的广告流氓软件例如:双11天喵、霸业传奇、贪玩蓝约等
  18. //数据结构:先序、中序、后序遍历二叉树。输入数据:abd##eg###c#f#h##
  19. 关于蚂蚁花呗无法使用的问题
  20. 使用 Struts 2 实现国际化

热门文章

  1. C# 学习 txt -- excel txt -- json
  2. Java开源爬虫框架crawler4j
  3. Atitit xml框架类库选型 attilax总结
  4. Elasticsearch之中文分词器插件es-ik(博主推荐)
  5. leetcode 111
  6. 浏览器加载渲染HTML、DOM、CSS、 JAVASCRIPT、IMAGE、FLASH、IFRAME、SRC属性等资源的顺序总结...
  7. winform登录时,在密码框按下回车,直接登陆
  8. 增删改模块学习中遇到的问题
  9. java 消费者模式 多线程_[Java并发-24-并发设计模式] 生产者-消费者模式,并发提高效率...
  10. 杨辉三角(完整代码)