📋 R代码编写规范

Best Practices | 路径管理 | 包引用规范 | 最佳实践

最实用 代码规范 团队协作
📘

R代码编写规范 (Best Practices)

以下是一套完整的R代码编写标准,帮助你生成规范、可维护、可复现的R代码

1 完整提示词(复制给AI)

Prompt:
在编写R代码的过程中,注意以下几点:

## 路径管理
- 我的文件读取文件夹在相对路径 ./input
- 我的结果输出文件夹在相对路径 ./output

## 包引用规范
- 如果使用的是 dplyr 包的 filter() 函数,记得加上 `dplyr::filter()` 进行包指定,否则会报错
- 建议所有函数都使用 `包名::函数名()` 的格式调用

## 代码注释
- 在代码适当的地方加上注释 #,方便我查看和理解

## 文件保存命名
- 如果涉及到文件保存,建议文件前自动加入当日的8位数时间
- 示例代码:
```r
time_today <- as.Date(Sys.Date(), format='%Y%m%d')
index <- paste0("./output/", time_today, "_several_Comments.pdf")
ggsave(plot, filename = index, width = 20, height = 8)
```

## 循环使用规范
- 如果涉及到 For 循环,请使用 `foreach` 包中的 foreach 函数
- 格式:`foreach(i = ..., .errorhandling = "pass") %do% {......}`
- 请在循环中使用 `print` 或者 `message` 信息,指示当前分析的变量或项目或模型是什么
- 方便我在 console 中查看实时进度
- 如果有无法分析需要跳过的循环,请也用 `print` 或者 `message` 信息说明

## 列名规范
- 如果需要生成新列名,不要带有空格或者句点,容易报错
- 使用短下划线代替(如:baseline_age 而非 baseline.age 或 baseline age)

## 可选项
- 在代码首行添加清除环境:`rm(list = ls())`
- 如果 P < 0.001,则标记为 "<0.001";P值保留小数点后三位
- 提取模型系数和95%置信区间,整理成格式:
```r
ci_formatted <- sprintf("%.2f (%.2f to %.2f)", result_row$Estimate, result_row$CI_Lower, result_row$CI_Upper)
```

[在此描述你的分析需求]

2 路径管理规范

原则:使用相对路径,便于项目移植

# ✅ 推荐
data <- read.csv("./input/raw_data.csv")
write.csv(result, "./output/result_20260208.csv")

# ❌ 避免
data <- read.csv("/path/to/local/file")

💡 提示:使用 `here` 包或 `file.path()` 函数可以更好地处理跨平台路径问题

3 包引用规范

问题:不同包可能有同名函数(如 `filter()` 在 dplyr 和 stats 中都存在)

# ✅ 推荐:明确指定包
dplyr::filter(data, age > 18)
stats::filter(data, lowpass)

# ❌ 可能报错
filter(data, age > 18)  # 如果未加载 dplyr,会调用 stats::filter()

💡 提示:使用 `包名::函数名()` 可以避免函数冲突,提高代码可读性

4 文件命名规范

原则:文件名包含日期,便于版本管理

# ✅ 推荐格式
time_today <- format(Sys.Date(), "%Y%m%d")  # 20260208
filename <- paste0("./output/", time_today, "_analysis_result.xlsx")

# 输出示例:./output/20260208_analysis_result.xlsx

5 循环使用规范

优势:`foreach` 比 `for` 更灵活,支持并行计算

library(foreach)

# ✅ 推荐:带进度提示
results <- foreach(
  i = 1:100,
  .errorhandling = "pass"  # 遇到错误继续执行
) %do% {
  message(paste("正在处理第", i, "个样本..."))
  # 你的分析代码
  result
}

# ❌ 避免:无进度提示
for (i in 1:100) {
  # 你的分析代码
}

💡 提示:`.errorhandling = "pass"` 确保某个元素出错不会中断整个循环

6 列名规范

原则:避免空格和句点,使用下划线

# ✅ 推荐
baseline_age
systolic_bp
diagnosis_time

# ❌ 避免
baseline age      # 有空格
baseline.age      # 有句点(在某些情况下会被误解析)
baseline-age      # 有连字符

💡 提示:使用下划线是最安全的选择,R中所有操作都支持

7 P值格式规范

标准:P < 0.001 显示为 "<0.001"

# ✅ 推荐格式化函数
format_pvalue <- function(p) {
  ifelse(p < 0.001, "<0.001", sprintf("%.3f", p))
}

# 使用
result$p_formatted <- format_pvalue(result$p_value)

# 输出示例:
# 0.123 → "0.123"
# 0.0005 → "<0.001"

8 置信区间格式

标准格式:系数 (95% CI: 下限 to 上限)

# ✅ 推荐格式化
ci_formatted <- sprintf(
  "%.2f (%.2f to %.2f)",
  result_row$Estimate,
  result_row$CI_Lower,
  result_row$CI_Upper
)

# 输出示例:1.23 (0.98 to 1.48)

📁 项目结构标准化

project_name/
├── R/               # R脚本
├── data/
│   ├── raw/        # 原始数据(只读)
│   └── processed/  # 处理后数据
├── output/         # 结果输出
├── figures/        # 图表
└── README.md       # 项目说明

💡 最佳实践建议

  • 使用 RStudio 项目:创建 `.Rproj` 文件,自动设置工作目录,避免路径问题
  • 版本控制:使用 Git 跟踪代码变更,便于回溯和协作
  • 代码复现性:设置随机种子 `set.seed(123)`,确保结果可复现

📚 相关提示词