我已经阅读了Roxygen2 PDF以及本网站,并且我迷失了@method @ S3method @export之间的区别,以及如何使用这些来正确loggingS3方法。 我研究了下面的例子来讨论: 1.我将如何正确logging这些? 2.如何模拟打印和其他通用函数的文档,这些函数显示所有类特定实现的用例(例如,“打印”显示“因子”,“表”,“函数”的用法) 3.从wiki页面:“所有导出的方法需要@ S3method标签,它具有与@method相同的格式,导出的方法,而不是函数 – 即通用(myobject)将工作,但generic.mymethod(myobject)将不会。” 我无法解释这一点。 这似乎是说,如果标签不正确地指定,函数/方法调用将不能正常工作? 具体什么会打破? MyHappyFunction = function( x , … ) { UseMethod( "MyHappyFunction" ) } MyHappyFunction.lm = function( x , … ) { # do some magic }
我正在编写一个包,它定义了一个新的类,测量员和print方法,即print.surveyor 。 我的代码工作正常,我使用roxygen内联文档。 但R CMD check发出警告: 在文档对象“print.surveyor”中使用的函数/方法,但不在代码中:print 我使用Hadley编写的以下两页作为灵感: 名称空间和文档函数 ,它们都声明正确的语法是@method function-name class 所以我的问题是:使用Roxygenlogging我的新类的print方法的正确方法是什么? 更具体地说,我该如何摆脱这个警告? 这里是我的代码:(注释文件指出了解决这个问题的尝试,但都没有成功。) #' Prints surveyor object. #' #' Prints surveyor object #' ## #' @usage print(x, …) ## #' @aliases print print.surveyor #' @param x surveyor object #' @param … ignored #' @S3method print surveyor print.surveyor <- function(x, …){ cat("Surveyor\n\n") print.listof(x) } […]
tl;我的问题的版本 如果我想导入包,是否必须手动将import()指令写入我的NAMESPACE文件? 好像roxygen2不会神奇地为我做,即使我把它们列为“import:”在我的描述。 更好的版本 这是一个非常愚蠢的问题,但我问,因为答案对我来说并不明显。 我使用roxygen2来处理我的R包文档。 当我想要确定一个函数被导出时,我在它的roxygen块中添加一个@export标签。 随后的roxygenize()运行将相应地写入NAMESPACE指令。 但是, 我的软件包目前还导入了其他几个 Depends: R (>= 2.13.0), ggplot2 (>= 0.8.9) Imports: RColorBrewer, plyr, gridExtra 看来,尽piperoxygen2 将重写导出函数的NAMESPACE指令,但它不会自动重写NAMESPACE,以反映我指定的包应该导入到我的描述中。
Roxygen似乎工作的方式是,第一行是\title ,其他的都在\details ,然后任何@foo指令处理这些事情。 但是R文档比这更丰富。 我可以在.Rd文件中join"\section{Llamas}{Are they ungulates?}"有人操作"\section{Llamas}{Are they ungulates?}" 。 但是我不能让Roxygen做任何事情,除了把它们全部包装在\ details中。 我错过了什么吗? 我有一个hacky解决scheme,这是坚持一个无与伦比的\section我\section之前。 这然后结束\details部分。 那么我就不得不把结局放在里面了,因为roxygen坚持认为它closures了“ \details 。 Eeeeeurrrrrrrrgh。