✅ 1. 基本读取函数(Base R)
| 函数 |
用途 |
示例 |
read.table() |
读取通用表格数据(需指定分隔符) |
read.table("data.txt", sep = ",") |
read.csv() |
读取 CSV 文件(逗号分隔) |
read.csv("data.csv") |
read.csv2() |
读取欧式 CSV(分号分隔) |
read.csv2("data.csv2") |
read.delim() |
读取制表符分隔文件 |
read.delim("data.tsv") |
readLines() |
按行读取文本文件(如日志) |
readLines("log.txt") |
scan() |
读取纯文本数据到向量 |
scan("data.txt") |
source() |
读取并执行 R 脚本 |
source("script.R") |
load() |
读取 .RData 文件 |
load("data.RData") |
unserialize() |
读取 .rds 数据对象 |
unserialize(file("object.rds")) |
readRDS() |
读取 .rds 文件对象 |
readRDS("object.rds") |
📗 2. 高性能读取函数(推荐)
| 包 |
函数 |
用途 |
data.table |
fread() |
读取大文件最快速(支持 CSV/TSV) |
readr |
read_csv(), read_tsv(), read_delim() |
更快且类型自动识别(tidyverse) |
readr |
read_lines(), read_file() |
读取文本、逐行文本 |
vroom |
vroom() |
多文件异步读取(高性能) |
✅ 示例:
library(data.table)
fread("bigdata.csv")
library(readr)
read_csv("data.csv")
📘 3. Excel 文件读取
| 包 |
函数 |
描述 |
readxl |
read_excel() |
读取 .xls 和 .xlsx(无需 Java) |
openxlsx |
read.xlsx() |
无需依赖,支持格式控制 |
xlsx |
read.xlsx() |
Java 依赖,可读取多个 sheet |
✅ 示例:
library(readxl)
read_excel("grades.xlsx", sheet = 1)
🌐 4. Web / API / URL 数据
| 函数 |
说明 |
read.csv("http://...") |
可直接读取远程 CSV |
jsonlite::fromJSON() |
读取 JSON(本地或 API) |
xml2::read_xml() |
读取 XML 数据 |
httr::GET(), content() |
配合 JSON/XML 读取 API |
rvest::read_html() |
读取网页(用于爬虫) |
🗄️ 5. 数据库连接与读取
| 包 |
函数 |
说明 |
DBI |
dbConnect(), dbReadTable(), dbGetQuery() |
通用数据库操作接口 |
RSQLite |
连接 SQLite 数据库 |
|
RODBC / odbc |
连接 MySQL、SQL Server、Oracle 等 |
|
RMariaDB, RPostgres |
专用数据库驱动 |
|
✅ 示例:
library(DBI)
con <- dbConnect(RSQLite::SQLite(), "mydb.sqlite")
data <- dbReadTable(con, "users")
📦 6. 其他数据格式
| 类型 |
函数 |
包 |
| JSON |
fromJSON() |
jsonlite |
| XML |
read_xml() |
xml2 |
| YAML |
yaml.load_file() |
yaml |
| Feather |
read_feather() |
arrow |
| Parquet |
read_parquet() |
arrow |
| SAS |
read_sas() |
haven |
| SPSS |
read_sav() |
haven |
| Stata |
read_dta() |
haven |
| HDF5 |
h5read() |
rhdf5 |
🔐 7. 压缩与特殊文件
| 类型 |
函数 |
说明 |
.gz, .bz2 |
gzfile(), bzfile() |
可与 readLines() 等函数结合 |
| zip 文件 |
unz() |
读取压缩包中指定文件 |
| 多行日志 |
readLines() + grep() |
日志筛选 |
✅ 推荐组合总结
| 需求 |
推荐函数 |
| 常规 CSV |
read_csv() (readr), fread() (data.table) |
| Excel |
read_excel() (readxl), read.xlsx() (openxlsx) |
| 大数据 |
fread(), vroom() |
| 多表格格式 |
read_delim(), read_csv2() |
| API / JSON |
fromJSON() + httr::GET() |
| 数据库 |
DBI + 数据库驱动 |
| SPSS/SAS |
haven::read_sav(), read_sas() |
| XML/YAML |
xml2, yaml |
🧪 示例练习
library(readr)
csv_data <- read_csv("students.csv")
library(readxl)
xls_data <- read_excel("grades.xlsx")
library(jsonlite)
json_data <- fromJSON("https://api.example.com/data.json")
library(data.table)
fast_data <- fread("big_data.csv")