You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R包文档@example引入外部示例如何用\dontrun{}跳过devtools::check运行

R包roxygen2中@example引用外部示例搭配\dontrun的正确写法

原写法失效的核心原因:
@example是roxygen2专门用于导入外部示例文件的标签,仅接受文件路径作为唯一参数,不会解析参数中包含的\dontrun{}这类Rd标记,你之前的写法会把整个\dontrun{./inst/eg/example.R}当成文件名查找,自然无法生效。


两种可行实现方案

方案1:修改外部示例文件(适合不需要直接运行外部示例文件的场景)

直接在你引用的./inst/eg/example.R文件首尾添加\dontrun{}包裹全部代码:

\dontrun{
# 原有示例代码全部放在中间
library(你的包名)
your_func(a = 1, b = 2)
# ...其他示例代码
}

roxygen标签保持原有写法即可:

#' @example ./inst/eg/example.R

生成Rd文件时,整个文件内容会被直接插入示例块,\dontrun{}会被正常识别,devtools::check()运行时会跳过这部分示例。

方案2:改用@examples标签调用外部文件(兼顾示例文件可直接本地运行的需求)

如果不想修改原有示例文件,可以放弃@example标签,改用支持写Rd标记的@examples(注意末尾有s)标签,通过source读取外部示例,写法如下:

#' @examples
#' \dontrun{
#' source(system.file("eg/example.R", package = "你的包名"))
#' }

注意:这里路径去掉了inst层级,因为R包安装时,inst文件夹下的所有内容会直接放到包的根目录,system.file会自动匹配已安装包的文件路径。

这种方案下你原有示例文件不需要做任何修改,本地测试时直接运行source("./inst/eg/example.R")就能执行示例,打包后check也不会运行这部分代码。


内容的提问来源于stack exchange,提问作者rick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:09:01