1. R 是什么 & 为什么用 R

  • 定义:R 是用于统计计算与绘图的自由开源语言/环境,内置大量统计方法(线/非线性建模、检验、时间序列、分类、聚类等),矩阵代数支持强。适合统计分析与数据科学场景。

  • 渊源:R 源于 S 语言(Bell Labs 1970s;Gentleman & Ihaka 1995 实现可执行 S 的软件——R)。S-PLUS 为商业化实现。

  • 优势

    1. 社区生态强:海量高质量、领域专用包(如金融、基因组学)。

    2. 统计函数与矩阵运算原生支持完善。

    3. 可视化强:尤其是 ggplot2 等扩展库。

  • 注意

    1. 性能不如系统语言;

    2. 偏统计/数据分析,通用编程略弱;

    3. 某些“怪癖”:1 起始索引、多赋值操作符、非常规数据结构等。


2. 安装与启动


3. 包(Packages)与 CRAN 生态

  • 为何装包:基础 R 不含所有领域算法,如 RNA-Seq 需 DESeq2/edgeR 等;金融分析有专门 Task View。

  • CRAN Task Views:官方按领域分类的包清单/导览页面(金融视图示例)。优先从 Task View 找权威包与替代方案。

  • 安装方式

    • 在线:install.packages("tidyverse")(会自动下载/编译/安装)。

    • 本地离线:RStudio 菜单 Packages → Install from local files,选择本地 zip。

  • 加载包library(tidyverse),加载后其函数可直接调用。若报错“there is no package called …”,需先安装再 library()

  • tidyverse:一组“以数据科学为中心”的约定式包集合,核心成员含 ggplot2/dplyr/tidyr/readr/purrr/stringr/forcats;加载时会显示与 stats 的函数命名冲突提示(例如 filterlag)。


4. R 基础语法与运算符

4.1 交互与脚本

  • 交互:控制台提示符 >,逐行执行。脚本文件建议以 .R 保存,通过编辑器发送至控制台运行。

4.2 赋值与变量

x <- 2; y <- 5 
x * y # 10 
x < y | y != 5 # TRUE 
x < y & y != 5 # FALSE 
  • 赋值惯用 <-(也可用 =,但建议风格一致)。

4.3 算术运算符

示例

4.4 逻辑/比较运算

示例

  • 易错点= 用于赋值;比较请用 ==。如 2 = 2 会报“invalid left-hand side to assignment”,正确写法 2 == 2


5. 数据类型与数据结构

5.1 向量(vector)

  • 创建:c(1,2,5.3,6,-2,4)c("one","two")c(TRUE,FALSE)

  • 索引:a[c(2,4)] 取第 2 与 4 个元素。

5.2 矩阵(matrix)

  • 同列同模态、同长度。Matrix name<-matrix(vector, nrow=r, ncol=c)

5.3 数据框(data.frame)

  • 各列可不同类型(数值/字符/因子/逻辑)。

  • NA 表示缺失值,统计/绘图前需特别处理。

5.4 列表(list)

  • 可异构数据容器:


  • 双中括号 [[ ]] 取组件本体;$ 按名称取组件。


6. 数据导入/导出

6.1 导入

  • CSV:read.csv("path/mydata.csv")CSV 文件是一种用纯文本格式存储表格数据(如数字和文本)的通用标准。它利用简单的逗号(,)作为分隔符,来明确区分开每一条记录中的不同字段,从而实现数据的结构化存储和交换。

  • TSV/通用定界:read.table("path/mydata.tsv")(默认空白分隔,TSV 常用 sep="\t"

    制表符分隔值(TSV)文件是一种用于以表格结构存储数据的简单文本格式。

6.2 导出

  • 制表符文本:write.table(mydata, "path/mydata.txt", sep="\t")

  • CSV:write.csv(mydata, "path/mydata.csv")


7. 查看数据与结构

  • 自带数据集 trees(Girth, Height and Volume for Black Cherry Tree)用于练习:

    • names(trees) 查看变量名;

    • str(trees) 查看结构(行数、列数、类型、示例值);

    • head(trees)/tail(trees) 看前/后 6 行。


8. 描述性统计与相关性

8.1 基本统计

R语言提供了大量用于获取汇总统计信息的函数。

  • mean/sd/var/min/max/median/range/quantile/IQR

  • 
      

    summary(trees)是一个泛型函数生成的结果是一个总和 一次产出均值/中位数/四分位/极值等汇总

    泛型函数quantile可生成对应于给定概率的样本分位数。最小观测值对应概率0,最大观测值对应概率1。
    • IQR(x) = quantile(x, 3/4) - quantile(x, 1/4)

    (注:IQR即四分位距,是描述数据离散程度的统计量,计算公式为第三四分位数与第一四分位数之差)

8.2 相关/协方差

可以使用 cor() 函数计算相关系数,使用 cov() 函数计算协方差。
• 简化格式为:cor(x, use=, method=)


9. 绘图(Base R 与 ggplot2)

9.1 Base R

  • 散点 + 回归线 + 标题

plot() 函数会打开一个图形窗口并绘制树高与树围的散点图。
• 下一行代码会为此图形添加一条回归线。
• 最后一行代码添加标题。

  • 
    
  • 直方图hist(trees$Height)

  • 保存图形(JPEG 举例):

    jpeg("c:/mygraphs/myplot.jpg") 
    plot(trees$Girth, trees$Height) 
    dev.off() # 关闭图形设备,文件写入完成 
    
  • 注意:忘记 dev.off() 文件会不完整;在 macOS/Linux 改用合适路径分隔符。

9.2 ggplot2(tidyverse 核心)

  • 安装与加载:install.packages("tidyverse"); library(tidyverse);或仅装 ggplot2

  • 内置数据 ggplot2::mpg(EPA 采集的 38 类车型相关数据,234×11):先 ?mpg 查看字段含义。您可以探索 ggplot2 中的 mpg 数据框(即 ggplot2::mpg)。数据框是一种按变量(列)和观测值(行)组成的矩形集合。mpg 包含美国环境保护局收集的 38 款车型的观测数据。

  • 基本绘图语法

    ggplot(data = mpg) + geom_point(mapping = aes(x = displ, y = hwy))

    解释:发动机排量(displ)与高速油耗(hwy)呈负相关(排量越大油耗越高)。


10. RStudio(Posit)帮助系统

  • 打开 Help 面板,输入函数或包名(如 ?meanhelp("lm")help.search("correlation")),查看示例与参数解释。熟练利用帮助是上手 R 的捷径。


11. 学习与资料

  • CRAN / Bioconductor:获取官方 R 与生物信息学包。

  • 官方/社区资源:R 官网、RStudio(Posit)图书与教程清单。遇到报错先读帮助再搜这些权威渠道。


12. 实操清单(按本文档内容设计)

  1. 环境准备:安装 R → 安装 RStudio(Posit)→ 在 Console 输入 R.version.string 验证。

  2. 包管理

    • install.packages("tidyverse")library(tidyverse)

    • 查看包冲突提示;用 package::function 消歧(如 dplyr::filter)。

  3. 数据结构

    • 创建 vector/matrix/data.frame/list,练习索引与子集化。

  4. 导入导出:用 read.csv 读一份 CSV,write.csv 导出结果。

  5. 统计与可视化

    • treessummarycorcov

    • Base R 作散点 + 回归线,并保存为 jpeg;

    • ggplot2mpgdispl vs hwy


13. 常见坑位 & 小贴士(针对本文案例补充)

  • 比较符号:判断相等用 ==,别写 =(赋值)。文档示例已给出典型报错场景。

  • 缺失值:相关/协方差时若含 NA,请设置 use="complete.obs";否则可能得到 NA 结果或错误。

  • 绘图导出:图形设备要 dev.off() 关闭。未关闭时文件空白或被占用。

  • 包未安装library() 报 “there is no package called …” → 先 install.packages()

  • 工作目录:路径写法与系统有关;建议先 getwd()/setwd();或使用 RStudio “Files” 面板设定。

Logo

更多推荐