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

使用{roxygen2}注释创建新{box}模块的步骤求助

从R脚本到带文档的box模块:实操指南

先理清核心区别:别拿R包的工具套box模块

devtools::document()是给标准R包用的,而box模块不需要R包的DESCRIPTION、NAMESPACE那套结构,你之前报错就是因为devtools在找R包根目录,你的Module1不是R包,自然找不到。别再用devtools那一套,跟着下面的步骤来。

步骤1:调整文件结构(可选但规范)

你的当前结构:

Module1/
  R/
    functionscript1.R

box模块的标准玩法更灵活:

  • 要么直接把functionscript1.R放到Module1根目录下;
  • 要么保留R目录也可以,但必须在Module1根目录新建一个__init__.r文件(注意是前后各两个下划线),这个文件是模块的入口,用来控制导出内容。

步骤2:用box自带工具生成文档

box支持roxygen2注释,但要用自己的命令生成文档:

  1. 打开R,把工作目录设为Module1的父目录(比如Module1在~/my_projects下,就运行setwd("~/my_projects"))
  2. 执行命令:
    box::document("Module1")
    
    这会在Module1目录下自动生成man/文件夹,里面就是你的函数帮助文档。

步骤3:配置模块导出(关键)

打开Module1下的__init__.r,写入以下内容:

#' @export
box::use(./R/functionscript1[...])
  • 这里的[...]表示导出该脚本里所有带#' @export注释的函数;
  • 如果只想导出特定函数,改成functionscript1[你的函数名1, 你的函数名2]就行。

步骤4:测试模块加载

现在就能正常调用模块了:

  • 加载模块并通过模块名调用函数:
    box::use(./Module1)
    Module1::你的函数名()
    
  • 直接加载模块里的所有导出函数(不用加模块前缀):
    box::use(./Module1[...])
    你的函数名()
    

常见坑排查

  • 文档生成失败:检查roxygen注释格式,每一行注释必须以#'开头,#' @export要紧跟在函数定义的上方;
  • box::use()没效果:确保工作目录是Module1的父目录,或者用绝对路径加载(比如box::use("~/my_projects/Module1"));另外检查__init__.r里的路径是否和你的脚本位置匹配。

内容的提问来源于stack exchange,提问作者C. W.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:25:20