本指南列出AI/数据科学工作流程中最实用的R工具包,覆盖数据处理、建模、深度学习、NLP、LLM集成、可解释性、MLOps与部署、工程化与复现等关键环节,并配备最小可运行示例。
· 受众:数据科学家、分析师、ML工程师
· 目标:以少即是多的方式,提供可落地的工具组合与代码片段
· renv:项目级依赖管理与可复现环境
· pak:高速安装包
· targets:可重现、可并行、可追踪的工作流管线
· arrow / duckdb:高性能本地/内存外分析(大数据友好)
示例:
# 环境固定install.packages("renv"); renv::init() # 生成 renv.lock# 高速安装install.packages("pak"); pak::pak("tidyverse")# 任务管线(targets)library(targets)tar_option_set(packages = c("tidyverse"))list( tar_target(raw, readr::read_csv("data.csv")), tar_target(clean, raw |> dplyr::filter(!is.na(y))), tar_target(model, lm(y ~., data = clean))) |> tar_pipeline()tar_make()
· tidyverse(readr/dplyr/tidyr/stringr/purrr):一致API,90%数据任务的首选
· data.table:极致性能与内存效率
· janitor:快速表头清洗、列质量检查
· lubridate:时间数据处理
· arrow:读取Parquet/Feather;与Python/Spark友好
示例:
library(tidyverse)df <- readr::read_csv("file.csv") |> janitor::clean_names() |> mutate(date = lubridate::ymd(date), ratio =x /y) |> group_by(category) |> summarise(n = n(), mean_ratio = mean(ratio, na.rm = TRUE))
· ggplot2:语法统一、生态全面
· plotly/highcharter:交互式可视化
· ggiraph:SVG交互
· gt/flextable:高质量表格
· quarto/rmarkdown:可复现实验报告/文档/幻灯片
示例:
library(ggplot2)ggplot(df, aes(x =feature, y =target, color =group)) + geom_point(alpha = 0.6) + theme_minimal()
· tidymodels(parsnip/recipes/workflows/tune):统一建模接口与调参
· xgboost/lightgbm/catboost:结构化数据SOTA
· h2o:AutoML与分布式ML
· glmnet:正则化广义线性模型
· mlr3:另一套强大的建模框架
· ranger:高性能随机森林
示例(tidymodels+ xgboost):
library(tidymodels)set.seed(1)split <- initial_split(df, prop = 0.8, strata = target)train <- training(split); test <- testing(split)rec <- recipe(target ~., data =train) |> step_impute_median(all_numeric_predictors()) |> step_dummy(all_nominal_predictors())model <- boost_tree( trees = tune(), learn_rate = tune(), mtry = tune()) |> set_engine("xgboost") |> set_mode("regression")wf <- workflow() |> add_recipe(rec) |> add_model(model)grid <- grid_latin_hypercube( trees(), learn_rate(), finalize(mtry(), train), size = 20)res <- tune_grid(wf, resamples = vfold_cv(train, v = 5, strata = target), grid =grid, metrics = metric_set(rmse, rsq))best <- select_best(res, "rmse")final_wf <- finalize_workflow(wf, best)fit <- last_fit(final_wf, split)collect_metrics(fit)
· torch(R torch):原生R的PyTorch前端,生产级性能
· keras/tensorflow:成熟生态
· tabnet:适合表格数据的深度模型
示例(torch最小示例):
library(torch)x <- torch_tensor(matrix(rnorm(100), nrow = 20))y <- torch_tensor(rnorm(20))model <- nn_module( initialize = function(p = 10) { self$lin1 <- nn_linear(p, 32) self$lin2 <- nn_linear(32, 1) }, forward = function(x) {x |> self$lin1() |> nnf_relu() |> self$lin2() })net <- model(p = ncol(x))opt <- optim_adam(net$parameters, lr = 1e-3)for(i in 1:200) { opt$zero_grad()y_hat <- net(x)$squeeze()loss <- nnf_mse_loss(y_hat, y) loss$backward(); opt$step()}
· tidytext:文本-整洁数据工作流
· quanteda:高性能文本分析、dfm、特征工程
· text2vec:高效向量化、词嵌入、GloVe
· udpipe/spacyr:依存句法/词性标注
· reticulate:桥接Python的HuggingFace生态(transformers、sentence-transformers)
示例(quanteda+ text2vec):
library(quanteda); library(text2vec)toks <- tokens(c("R is great for NLP", "AI with R and Python"))dfm <- dfm(toks) |> dfm_trim(min_termfreq = 1)it <- itoken(colnames(dfm))v <- create_vocabulary(it)
· gptstudio:在RStudio中便捷使用OpenAI/Claude等(交互/补全)
· openai(官方/社区包):直接调用OpenAI API
· reticulate + Python客户端:HuggingFace Inference, vLLM, llama.cpp等
· text-generation-webui/ollama(通过系统或Python侧)+ plumber:本地/私有化部署后由R封装API
示例(reticulate+ Python HF推理):
library(reticulate)hf <- import("huggingface_hub")inference <- import("huggingface_hub.inference_api", convert = TRUE)$InferenceClientclient <- inference(token = Sys.getenv("HF_TOKEN"))resp <- client$text_generation("meta-llama/Meta-Llama-3-8B-Instruct", "用中文简述R语言在AI中的作用", max_new_tokens = 128)cat(resp)
提示:- 对云端API务必用环境变量管理密钥(Sys.getenv),避免明文泄露- 企业内优先考虑私有化/代理网关
· DALEX:通用模型解释(全局/局部)、Break Down/SHAP
· iml:模型无关解释框架
· SHAPforxgboost:xgboost专用SHAP
· vip:特征重要性可视化
· performance/checkmate:诊断与健康检查
示例(DALEX):
library(DALEX)expl <- explain(model = fit$.workflow[[1]], data = dplyr::select(train, -target), y = train$target, label = "xgb")vip <- model_parts(expl)plot(vip)
· fable/fasster:现代时间序列框架
· prophet:业务友好季节性与节假日建模
· tsfeatures/tsoutliers:特征与异常检测
示例:
library(fable)# 构造 tsibble 后使用
专业R语言辅导| Python编程| 数据分析Data analysis | 统计分析Statistics | 数据挖掘Data mining | 机器学习Machine learning | |统计分析 Statistics|STATS 202|STATS 203|STAT 110|STAT 104|STAT 705|STAT 707|STAT4203|STAT4204|STAT4205|STAT4206|STAT 133|STAT 134|STAT 101A|STAT 100A|STAT 581|STAT 520|STAT 521|STAT 4500|STAT 5805|STAT 5806|STAT 4600|STAT30001|STAT3001|STAT3002|STAT3003|STAT3004|STAT3005|STAT3006|STAT5001|STAT5002|STAT5003|STAT5004| http://www.rdaizuo.com http://www.daixie.it.com http://www.rcodedaixie.com http://www.rdaima.com## 10. MLOps 与部署
· vetiver:从训练到部署(与pins/board集成)
· plumber:将R模型/逻辑封装为REST API
· pins:模型/数据版本化与共享
· mlflow(reticulate)/ aim(reticulate):实验追踪
· shiny:交互式应用与内嵌推理UI
示例(plumber最小API):
#* @post /predictfunction(req) {new <- jsonlite::fromJSON(req$postBody)pred <- predict(fit$.workflow[[1]], tibble::as_tibble(new)) list(pred = pred$.pred)}
· future/furrr:声明式并行(本地/集群)
· data.table:多线程
· Rcpp:C++扩展
· matrixStats:向量化统计加速
示例(furrr):
library(furrr); plan(multisession, workers = 8)res <- future_map(1:100, ~ heavy_fn(.x))
· validate/pointblank:数据规则校验与质量报告
· skimr:快速数据体检
示例:
library(skimr)skim(df)
· reticulate:无缝使用Python生态(Transformers、PyTorch、LangChain)
· DBI/dplyr/dbplyr:统一SQL接口(Postgres/MySQL/BigQuery/Spark)
· sparklyr:连接Spark生态
示例(dbplyr):
library(DBI); library(dbplyr)con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")copy_to(con, df, "tbl", temporary = FALSE)tbl(con, "tbl") |> filter(x > 0) |> summarise(m = mean(y)) |> collect()
· 快速上手(分析+建模):tidyverse + tidymodels + xgboost + ggplot2 + DALEX
· 生成式AI/LLM:reticulate+ Python HF/本地LLM+ plumber/shiny(服务化)
· 工程化:renv + targets + arrow/duckdb + future/furrr + pins/vetiver
· 报告与可复现:quarto/rmarkdown + git
· 所有密钥放入环境变量(.Renviron/.env+ Sys.getenv)
· 产线禁用明文密钥与训练数据外泄;记录数据血缘
· 对LLM输出做合规审查与缓存(防漂移与成本控制)
· 模型版本化与灰度发布(pins/vetiver/MLflow)