R语言中@符号的作用是什么?为何注释需使用@?
R包源码中
#' @xxx注释里@符号的作用 这是Roxygen2的文档标记语法
你看到的#' @param这类注释,是R生态里Roxygen2工具的专属标记,用来自动生成R包的帮助文档。
#'是Roxygen2识别的注释开头,和普通#注释划清界限——普通注释只给开发者看,#'开头的注释是给文档生成工具“读”的。而@开头的标签,就是给这些注释做分类:告诉工具这段内容对应帮助文档的哪个模块。
比如你举的例子:
#' @param target,current Two data frames to compare.
这段就是给函数的target和current参数写说明,Roxygen2会把这段内容提取出来,放到函数帮助页面的「Arguments」板块里。
常用的@标签还有这些:
@title:给函数加短标题@description:写函数的详细功能说明@return:说明函数返回值是什么@examples:写可运行的示例代码@export:标记函数要对外导出,让用户能直接调用
为什么要在#后用@?
核心是区分普通注释和文档注释,同时给文档内容做结构化标记。如果不用@,Roxygen2没法判断这段注释是参数说明、返回值说明还是别的,也就没法自动生成规范的帮助文档。
和C语言中@的区别
完全不是一回事:
- C里的
@要么是特定编译器的扩展语法(比如微软VC里的一些用法),要么是Objective-C里标识对象、协议的语法符号; - R里除了注释里的
@标记,还有另一个独立用法:访问S4对象的槽(slot),比如my_s4_obj@my_slot,但这和注释里的@是完全不同的场景。
简单说,R注释里的@就是文档生成的“分类标签”,和C的用法没有任何关联。
内容的提问来源于stack exchange,提问作者doraemon
相关产品推荐
相关产品推荐

