R 教程


R 是一个开源的统计和绘图系统。

本教程,我们将为大家介绍如何使用R。R其实很容易学,相信你们能很快学会。


生物信息与R语言QQ群: 187923577

w3cschool的R教程

techvidvan R

易百教程R语言

The R Manuals

R自学大纲

Rdocumentation | R Language Definition 官方R语言定义

【极力推荐|干货集锦】R 和 R包的 cheatsheets:

  • Base R / Advanced R / How big is your graph? / Regular Expressions /
  • ggplot2 /Rmarkdown /shiny / devtools / Parallel Computation /
  • Keras / Machine Learning Modelling / mlr /

现在开始学习 R !


谁适合阅读?

本教程针对的是R统计和绘图的知识,适合从事数据分析和数据可视化的人员阅读。


需要具备的知识?

如果你熟悉主流计算机编程语言,相信你会很快学会R。

本教程使用R和Rstudio作为编辑器来讲解R的应用。


怎么学习R语言?

入门看视频,快速进步靠书籍,高手查文档,顶尖要研究源码。
纸上得来终觉浅,绝知此事要躬行!不停地编码才能进步,不能光看不练。

推荐慕课网视频教程,适合入门者学习: R语言基础视频

学习路径: 视频入门,然后看书,《R语言实战》依旧是值得入手的经典书籍。

然后学习R包 ggplot2, dplyr 等,以及你的学科专用的几个R包。

统计是贯穿始终的,也是花样最多的。

绘图主要是基础R绘图、ggplot2绘图,如果还有需求,可以研究一下ggplot2的依赖包 grid,这是R最灵活也是最繁琐的绘图系统,能满足几乎任何天马行空的图形图像想象力。最新版的grid已经开始支持渐变色填充、图形填充、蒙版等PS功能,距离成为一个艺术品创建工具咫尺之遥了。


R base 并没有过时,高频使用,且是各种R包的基石。不要被某些商业宣传误导。

面对频繁修改的花哨的R包API,有些步骤如果不想纠缠,直接用可靠的R基础语法反而更节省时间。为了节省那几秒的运行速度,牺牲好几个甚至几十个小时排错,对于R使用者大多是不值得的。



可以时常思考的哲学问题: 如何高效地学好 R?

R的基础包括:查帮助文档、数据类型(vector/factor/df/list/matrix)、控制结构(if/for/while/)、函数与自定义函数、文件读写、字符串操作、统计(分布、抽样、检验、回归、相关)、ggplot2绘图、R包安装等。
中级的包括:基础绘图系统(高水平/低水平绘图函数、颜色系统)、自定义ggplot2(主题、图形等)、性能优化(向量化/耗时分析 system.time/多核并行)、apply家族函数、正则表达式、排错Debug与打印日志、脚本化及传参、机器学习与深度学习、复杂R包的安装、MySQL操作等。
高级包括: grid包绘图、测试Testing、函数作用域、OOP、环境、R的元编程、C/C++/Rcpp扩展、命名空间、R包编写、流程化、RPC框架、API、web交互,甚至给出一个更快的R运行环境等。



R还可以生成富JavaScript、交互式的web app,请查看 shinyhtmlwidgets及其 demo, RESTfull API 组件plumber



常用语句

暂时无法归类的常用语句。

# 字符串不自动转为因子
options(stringsAsFactors=F)

# jupyter中控制图形宽高,和pdf中宽高一致。放到每个图形之前。
options(repr.plot.width=12.5, repr.plot.height=5.5)

# 保留2位小数
formatC(0.00012583, format = "e", digits = 2) # "1.26e-04"

# 保存时
pdf("01.pdf", width=3, height=3, useDingbats = F)
print(g1)
dev.off()

ggsave("01.pdf", width=3, height=3, useDingbats = F)


# 设置边距的顺序(底部开始,顺时针):B, L, T, R
par(mar=c(4,4,1,1))
plot(1:10, main="x")

更多实例请阅读我的免费电子书: 《R 语言最佳实践》

R语言核心知识框架

下面是《R核心技术手册》的目录,勾画了R语言主要的知识点。 本站不提供电子版下载,如有需要可到电商平台等购买。 前言 xvi I 基础篇 第1 章获取和安装R R 版本 R 的安装 Windows Mac OS X Linux 和UNIX 系统 第2 章R 的用户界面 R 的图形用户界面 Windows Mac OS X Linux 和UNIX 程序 R 控制台 命令行编辑 批处理模式 在Excel 中使用R RStudio 其他运行R 的方式 第3 章简短的示例 基本操作 函数 变量 数据结构简介 对象和类 模型和公式 图表 获得帮助 第4 章R 包 R 包概览 列示本地库中的R 包 加载R 包 在Windows 和Linux 系统下加载R 包 在Mac OS X 系统下加载R 包 搜索R 包资源库 探索网络上的R 包资源库 基于R 界面搜寻和安装包 从其他资源库安装R 包 定制R 包 创建包目录 创建R 包 II 语言篇 第5 章R 语言概览 表达式 对象 符号 函数 在赋值语句中,对象会被复制 R 中一切皆为对象 特殊值 NA Inf 和-Inf NaN NULL 强制转换 R 解释器 观察R 是如何工作的 第6 章R 语法 常量 数值向量 字符向量 符号 运算符 运算顺序 赋值操作 表达式 分离型表达式 括号 花括号 控制结构 条件语句 循环 访问数据结构 数据结构操作符 通过整数向量引用 通过逻辑向量引用 通过名字进行引用 R 编程标准 第7 章R 对象 基本对象类型 向量 列表 其他对象 矩阵 数组 因子 数据框 公式 时间序列 Shingle 对象 日期和时间对象 连接对象 属性 类 第8 章符号和环境 符号 环境 全局环境 环境和函数 调用堆栈 在不同的环境中对函数求值 向环境中添加对象 异常 提示错误 捕获错误 第9 章函数 函数的关键字 参数 返回值 函数参数 匿名函数 函数的属性 参数顺序和具名实参 副作用 改变其他环境 输入/输出 图形 第10 章面向对象编程 R 的面向对象编程概览 核心概念 实现的例子 R 的面向对象编程:S4 类的定义 对象的新建 槽的存取 对象的操作 创建强制转换方法 方法 方法的管理 基本类型 更多的帮助 守旧派的OOP:S3 S3 的类 S3 方法 在S4 的类中使用S3 的类 查找隐藏的S3 方法 III 数据篇 第11 章数据的存取和编辑 在R 中输入数据 用R 命令输入数据 用图形界面输入数据 保存和读入R 对象 用save 保存对象 从外部文件导入数据 文本文件 其他软件 导出数据 从数据库获取数据 导出然后导入 数据库连接包 RODBC DBI TSDBI 从Hadoop 中获取数据 第12 章准备数据 合并数据集 粘贴数据结构 通过共同字段合并数据 数据转换 变量重新赋值 转换函数 对对象的每个元素进行函数运算 数据分段 shingle Cut 利用分组变量合并对象 子集 中括号索引的方式 subset 函数 随机抽样 汇总函数 tapply 与aggregate 用rowsum 聚合表格 计数 数据修整 数据清洗 查找和删除重复数据 排序 IV 可视化篇 第13 章图形 R Graphics 概述 散点图 时间序列 柱状图 饼图 分类数据绘图 三维数据 绘制分布图 箱线图 画图设备 自定义图形 绘图函数常见参数 图形参数 基本图形函数 第14 章Lattice 绘图 历史 lattice 包概述 lattice 的工作原理 例子 使用lattice 函数 定制面板函数 高级lattice 函数 单一的网格作图 二元网格作图 三元图 其他图形 定制lattice 图 lattice 函数的常用参数 trellisskeleton 指定如何绘制坐标轴 参数 plottrellis stripdefault simpleKey 低级函数 低级绘图函数 面板函数 第15 章ggplot2 一个简短的介绍 图形语法 一个更复杂的例子:医保数据 快速绘图 用ggplot2 绘图 更多信息 V 统计篇 第16 章数据分析 描述性统计 相关系数和协方差 主成分分析 因子分析 bootstrap 重抽样 第17 章概率分布 正态分布 常见分布的参数 分布函数族 第18 章统计检验 连续型数据 基于正态分布的检验 不依赖分布的检验 离散数据 比例检验 二项式检验 列联表检验 列联表非参数检验 第19 章功效检验 实验设计示例 t 检验实验设计 比例实验设计 方差分析设计 第20 章回归模型 简单的线性模型示例 拟合模型 指定模型的工具函数 获取模型信息 更新模型 lm 函数的详述 最小二乘回归的假设 稳健回归和阻力回归 子集选取和Shrinkage 回归 变量的逐步选取 岭回归 Lasso 和最小角回归 弹性网络 主成分回归和偏最小二乘回归 非线性模型 广义线性模型 glmnet 包 非线性最小二乘 生存模型 平滑 样条线 拟合多项式曲面 核平滑 回归的机器学习算法 回归树模型 MARS 算法 神经网络 投影寻踪回归 广义可加模型 支持向量机 第21 章分类模型 线性分类模型 logistic 回归 线性判别分析 对数线性模型 机器学习分类模型 k 近邻 分类树模型 神经网络 支持向量机 随机森林 第22 章机器学习 购物篮分析 聚类 距离度量 聚类算法 第23 章时间序列分析 自相关函数 时间序列模型 VI 其他主题 第24 章优化R 程序性能 R 程序性能的测量 时间测定 性能分析 监控内存的使用 内存性能分析 优化你的R 代码 使用向量操作 R 中查找的性能 使用数据库查询大数据集 内存预分配 清理内存 大数据集的函数 加速R 的其他方法 R 字节码编译器 高性能的R 版本 第25 章Bioconductor 例子 加载原始的表达数据 从GEO 读取数据 匹配表型数据 分析表达数据 关键的Bioconductor 包 数据结构 eSet AssayData AnnotatedDataFrame MIAME Bioconductor 包使用的其他类 如何进一步学习 Bioconductor 之外的资源 教程 课程 相关图书 第26 章R 和Hadoop R 和Hadoop Hadoop 简介 RHadoop Hadoop streaming 了解更多 一些其他的用R 做并行计算的包 Segue doMC 从哪里我们可以了解更多6 参考文献 索引

R语言高级部分

高级R: https://adv-r.hadley.nz/index.html

R语言是C和R编写的,可以尝试看源码,能否看懂:https://github.com/wch/r-source