第1章 R语言概述

你好,欢迎来到这门课。我是老周,干了快十年数据科学,R 语言几乎是天天用。很多人觉得学 R 就是装个软件然后敲命令,其实真上手了会发现——嗯,开局选对工具链能少走一半弯路。

这一章我们先把地基打牢。内容是三块:R 语言凭什么值得学,RStudio 怎么装、怎么配,还有包管理那些坑我怎么踩过来的。没什么高深算法,但这些都是每天要碰的东西。

1.1 R 语言到底好在哪?

有时候有人问我:Python 也挺好,为什么还要学 R?我一般会反问:你做统计分析的时候,是喜欢一行代码就出图,还是得先装一堆库再调参数?R 的强项就在这里——它生来就是为了统计和可视化的。

我总结几个最直接的特点:

  • 统计基因:R 的核心就是统计建模,t 检验、回归、聚类、时间序列,都是原生的。
  • 图形能力:ggplot2 一出,画图的语法比 matplotlib 优雅太多。我做报告时几乎不碰其他工具。
  • 社区包:CRAN 上两万多个包,你想到的模型基本都有现成的。别自己造轮子。
  • 跨平台:Windows、macOS、Linux 都能跑,我经常在服务器上用命令行跑 R 脚本。

一句话:如果你主要做数据分析、统计建模、可视化,R 会让你效率翻倍。

1.2 R与RStudio安装——别踩的坑

安装这件事,说白了就是两步:装 R 核心,再装 RStudio。但我在项目中遇到过不少同事装完之后打不开包,或者中文乱码,都是因为版本没对上。

1.2.1 安装 R

去 CRAN(https://cran.r-project.org/)下载对应操作系统的安装包。我建议选最新稳定版,不用追预览版。安装时保持默认路径,唯一要注意的是——

Windows用户:安装时不要勾选“将R添加到系统PATH”,RStudio会自己管理路径。你手动加了反而可能与别的环境冲突。我吃过这个亏,后来重装才解决。

安装完成后,打开 R 自带的命令行界面试一下:

print("Hello, R!")

看到输出就没问题。但我个人习惯直接装好 RStudio,因为 R 原生的界面实在太简陋了。

1.2.2 安装 RStudio

去 Posit 官网(https://posit.co/download/rstudio-desktop/)下载免费的 Desktop 版本。安装过程一路默认就行。

我曾经遇到 RStudio 启动后报错“R not found”,原因是 R 的安装路径里有中文或空格。解决办法:安装 R 时选择纯英文路径,比如 C:\R\R-4.3.2。

1.2.3 配置建议

第一次打开 RStudio,我建议先做两件事:

  1. 设置镜像:在 Tools -> Global Options -> Packages 里把 CRAN 镜像改成国内的(比如清华或中科大),不然下载包慢到怀疑人生。
  2. 调整代码显示:我习惯勾选“Soft-wrap R source files”,这样长代码自动换行,不用拖滚动条。

1.3 包管理——R的灵魂

R 的包管理说简单也简单,说不简单… 我刚开始学的时候因为装包踩了无数坑,现在把经验告诉你。

1.3.1 基本操作

安装包用 install.packages(),加载用 library()。比如:

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

但是,你会遇到几个常见问题:

  • 依赖冲突:包 A 要求 dplyr 1.0.0,包 B 要求 dplyr 1.1.0,怎么办?
  • 编译错误:有些包需要本地编译工具链,Windows 上容易报错。
  • 版本回滚:新包有问题想回到旧版,怎么搞?

1.3.2 避坑指南

曾经有一次,我安装一个生物信息学包 BiocManager,结果因为 R 版本太旧,报了一堆依赖缺失。后来发现规律:CRAN 上的包通常要求 R >= 3.5,而 Bioconductor 的包经常要求 R 最新版。

我的建议:

  1. 优先安装预编译版:Windows 下用 install.packages("包名", type="binary"),避免从源码编译。
  2. 使用包管理器:renv 或 packrat 可以锁定项目依赖版本,像 Python 的 venv。我每个项目都初始化 renv。
  3. 查看依赖树:用 tools::package_dependencies() 了解某个包依赖什么。

1.3.3 快速安装命令

以下是我常用的安装命令模板:

# 安装多个包
install.packages(c("dplyr", "ggplot2", "tidyr"), type="binary")

# 从GitHub安装(需要 devtools)
library(devtools)
install_github("tidyverse/ggplot2")

装包的时候如果报错“package ‘xxx’ is not available for this version of R”,八成是版本不匹配。可以去 CRAN 的 Archive 页面下载旧版 tarball,用 install.packages("路径/包名.tar.gz", repos=NULL) 手动装。

1.4 R语言整体面貌

我们来看一张图,把这一章的三个核心块串起来:

R语言特征工程基础架构 R 语言核心 统计建模原生支持 ggplot2 可视化 CRAN / GitHub 包 跨平台运行 RStudio 安装配置 包管理(install / library) 后续章节会深入:数据读取、清洗、特征构造、自动特征选择…… 这一章建立的基础工具链是整门课的脚手架

1.5 我的日常开发流程

说完概念,分享一下我实际的日常。每天早上打开 RStudio,第一件事是跑一个初始化脚本:

# 项目初始化脚本
library(renv)
renv::restore()
library(tidyverse)
library(lubridate)
library(recipes)   # 特征工程常用
options(scipen=999)  # 取消科学计数法

这样能保证每个项目依赖完一致,不会出现“昨天还能跑今天报错”的尴尬。我曾经因为没锁版本,把模型的 R 脚本给同事,他跑出来结果不一样,查了三天发现是某个包偷偷更新了。从那以后 renv 就成了我的标配。

1.6 本章小结

这一章实际上就三件事:

  • R 是什么——数据科学家的瑞士军刀。
  • RStudio 怎么装——别装到中文路径,镜像设好,后面省心。
  • 包怎么管——能用二进制就不用源码,能锁版本就不要裸装。