# R Style

> 撰写R脚本必须遵循本规范，开发包除外。

- Skill: `victory-hugo/r-style` (Agent Skill)
- Install (CLI): `npx skillmds@latest add victory-hugo/r-style`
- Raw SKILL.md: https://api.skillmd.com/api/skills/victory-hugo/r-style/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Victory-Hugo (https://skillmd.com/u/victory-hugo)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/victory-hugo/r-style

---


# R 代码风格

## 1. 线性执行

代码从上到下顺序执行，不封装函数。图形逐层保存为 `p`、`p2`、`p3` 等。

## 2. 注释格式

功能区块：

```r
#* =====区块名称=====
```

步骤说明使用中文普通注释，并以动词开头：

```r
# 读取数据
# 绘制基础图形
```

参数含义使用行末 `#*` 注释：

```r
fill = Group, #* 填充颜色对应 Group 列
size = 3      #* 点大小
```

## 3. 数据处理

读取数据后使用 `knitr::kable(head(df1))` 预览，再直接进行后续处理，不封装数据读取逻辑。

## 4. 变量命名

* 图形：`p`、`p2`、`p3` 等
* 数据框：`df1`、`df2`、`df3` 等
* 多词变量：使用下划线连接

## 5. 包加载

所有 `library()` 放在脚本顶部，每行一个，不添加注释。

## 6. PDF 出图

任何情况下，都需要导出可在 Illustrator 中逐标签独立编辑的 PDF：

* 使用 `grDevices::pdf(..., family = "Arial", useDingbats = FALSE)`
* 使用项目内注册的 Arial AFM 字体度量
* 不使用 `cairo_pdf()`，避免连续文字被合并到同一 `BT...ET` 文本对象
* 验收要求：`BaseFont` 为 `/Arial`，且每个 `BT...ET` 中最多包含一个 `Tj` 或 `TJ`

## 7. 输出要求

* 直接输出代码
* 代码按顺序可执行
* 不使用 `main()`、`tryCatch()`、`invisible()` 或自定义函数，除非用户明确要求
* 说明内容优先写入代码注释，不在代码块外长篇解释

