R语言简介
R语言相关教材
- 学习R
- 统计建模与R软件
- R数据可视化手册
- R语言经典实例
- R语言实战
- R语言与统计分析
- R语言编程艺术
- ggplot2:数据分析与图形艺术
内容架构
- R语言简介: 软件安装, 获取帮助, 包的安装
- 数据类型
- 数据结构: 向量, 矩阵, 数组, 数据框, 因子, 列表
- 输入输出: 读取各种数据, 保存数据
- 数据处理: dplyr包
- 控制流
- 函数
- 统计分析
- 作图: ggplot2包(见pdf)
- knitr, markdown(本课件, 可重复性研究)
- shiny(安装shiny包, 初始文档)
- 地图相关应用
- 文本数据挖掘
shiny
世界地图
美国地图
各州地图
失业分布地图
R历史简介
- 奥克兰大学Ross Ihaka, Robert Gentleman 在20世纪90年代初开发
- 前身是20世纪70年代的S语言(贝尔实验室开发)
- 免费, 开源, 由20人左右的核心团队维护
开发工具
R的下载和安装
- 下载: http://www.r-project.org
- 安装: 一般软件安装方式
- 运行并简单操作
R的IDE介绍: RStudio
可用于编写R的集成开发环境:
- Emacs+ESS(快捷键多, 难度大)
- Eclipse/Architect(Java社区)
- RStudio
- Revolution-R
- Live-R
我们主要使用 RStudio(界面介绍)
R的基础使用
R作为科学计算器
- 加减乘除: +, -, *, /, %/%, %%
- 平方, 开方: ^, **, sqrt
- 指数, 对数: exp, log
- 三角函数: sin, cos, tan
- 排列组合: choose
R 中的常量和变量
R中变量名命名规则:
- 数字、字母、句点组成
- 首字符不能是数字
- 区分大小写
三种常量:逻辑型、数值型、字符型。
- 逻辑型:TRUE,FALSE。
- 数值型:123,123.45,1.234e10,2.1-3.5i
- 字符型:”小明”,”Weight”
- 缺失值:NA
给变量赋值
无需声明, 直接赋值即可
- <- 最常用
- = 不建议使用, 和假设检验的等号容易混淆
- -> 不建议使用, 改变方向会降低代码可读性
- assign 函数, 很少使用
1 | x <- 1; y <- 2; z <- x + y; z |
1 | ## [1] 3 |
变量空间
- 列出已经定义的所有变量: ls(), ls.str()
- 删除变量: rm()
- 限制使用: rm(list = ls())
向量
生成向量
使用c()操作来生成向量
1 | x <- c(1,2,3); x |
1 | ## [1] 1 2 3 |
1 | y <- c(2*5, 3-4, 12/5, pi); y |
1 | ## [1] 10.000000 -1.000000 2.400000 3.141593 |
1 | z <- c(x, y); z |
1 | ## [1] 1.000000 2.000000 3.000000 10.000000 -1.000000 2.400000 3.141593 |
计算基本统计量
基本统计函数:(并非全部)
- min, max, range, sum
- mean, median, quantile
- sd, var, cor, cov
1 | x <- c(1,2,3,4,5) |
1 | ## [1] 1.000000 5.000000 3.000000 3.000000 1.581139 2.500000 |
生成数列seq
1 | 1:5 |
1 | ## [1] 1 2 3 4 5 |
1 | seq(from = 4, to = 10, by = 2) |
1 | ## [1] 4 6 8 10 |
1 | seq(from = 0, to = 2, length.out = 5) |
1 | ## [1] 0.0 0.5 1.0 1.5 2.0 |
1 | seq(from = 0, to = 2, length.out = 6) |
1 | ## [1] 0.0 0.4 0.8 1.2 1.6 2.0 |
生成数列rep
1 | rep(1, times = 5) |
1 | ## [1] 1 1 1 1 1 |
1 | rep(c(1,2), times = 3) |
1 | ## [1] 1 2 1 2 1 2 |
1 | rep(c(1,2), each = 3) |
1 | ## [1] 1 1 1 2 2 2 |
请尝试生成以下数列
1 | ## [1] 6.0 5.5 5.0 4.5 4.0 3.5 3.0 2.5 2.0 1.5 1.0 0.5 0.0 -0.5 |
1 | ## [1] 1 3 5 2 4 6 3 5 7 4 6 8 5 7 9 6 8 10 7 9 11 8 10 |
1 | ## [1] -1 0 1 2 3 3 4 5 6 7 7 8 9 10 11 |
选取向量中的元素
1 | x <- 2:5 |
1 | ## [1] 2 |
1 | x[c(1,4)] |
1 | ## [1] 2 5 |
1 | x[2:3] |
1 | ## [1] 3 4 |
1 | x[-1] |
1 | ## [1] 3 4 5 |
向量常用函数
length, sort, order
1 | x <- c(4,6,2,7,1) |
1 | ## [1] 5 |
1 | sort(x) |
1 | ## [1] 1 2 4 6 7 |
1 | order(x) |
1 | ## [1] 5 3 1 2 4 |
1 | x[order(x)] |
1 | ## [1] 1 2 4 6 7 |
向量的循环计算
向量计算的循环法则
1 | x <- 1:5; y <- 5:1 |
1 | ## [1] 6 6 6 6 6 |
1 | x - 1 |
1 | ## [1] 0 1 2 3 4 |
1 | x^2 |
1 | ## [1] 1 4 9 16 25 |
向量的函数计算
1 | log(x) |
1 | ## [1] 0.0000000 0.6931472 1.0986123 1.3862944 1.6094379 |
1 | sin(x) |
1 | ## [1] 0.8414710 0.9092974 0.1411200 -0.7568025 -0.9589243 |
1 | z <- 1:3 |
1 | ## Warning in x + z: longer object length is not a multiple of shorter object |
1 | ## [1] 2 4 6 5 7 |
逻辑向量和比较运算符
- 逻辑值: TRUE(T), FALSE(F)
- 比较运算符: ==, !=, <, >, <=, >=, &, |, !
- all(), any() 函数
1 | 1 < 3 |
1 | ## [1] TRUE |
1 | x == 3 |
1 | ## [1] FALSE FALSE TRUE FALSE FALSE |
1 | any(x == 3); all(x == 3) |
1 | ## [1] TRUE |
1 | ## [1] FALSE |
使用逻辑表达式来选择向量
1 | fib <- c(0,1,1,2,3,5,8,13,21,34) |
1 | ## [1] 0 1 1 2 3 5 8 |
1 | fib[fib %% 2 == 0] |
1 | ## [1] 0 2 8 34 |
1 | fib[fib < mean(fib)] |
1 | ## [1] 0 1 1 2 3 5 8 |
逻辑表达式活用
- 请写出1-100之间不能被3整除的数
- 请写出1-100之间既不能被3整除也不能被5整除的数
- 圆周上从0°开始逆时针均匀选取100个点, 其正弦值有多少小于0.5?
作图
基础作图介绍
1 | x <- seq(from = -2*pi, to = 2*pi, length.out = 100) |
散点图
1 | plot( x, y, main = "scatter", xlab = "x-lab", ylab = "y-lab") |
连线图
1 | plot(((-50):50)/25,(((-50):50)/25)^3,type = "l") |
三维图,等值线图,等值色图
1 | x <- seq(-3,3, length=100) |
三维图
1 | persp(x, y, z) |
等值线图
1 | contour(x, y, z) |
等值色图
1 | image(x, y, z) |
帮助
R 的帮助文档
- help.start()
- help(mean)
- ?mean
- example(mean), example(image)
- ??mean
- apropos(“glm”, mode = “function”)
通过网络获取帮助
- RSiteSearch(“mean”)
- stackoverflow.com search for [r] ggplot2
R Package 操作
- install.packages(“ggplot2”)
- library(ggplot2)
- update.packages()
- installed.packages()
- remove.packages()
- help(package = “ggplot2”)
- packages on CRAN(in help.start())
- Rdocumentation
- CRAN Task Views.