✅ 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")