Roxygen似乎工作的方式是第一行是\title,其他一切都在\details,然后任何@foo指令处理这些事情.但R文档比这更丰富.我可以拥有"\section{Llamas}{Are they ungulates?}".Rd文件.
但我无法让Roxygen做任何其他事情而不是将其全部包装在\ details中.我错过了什么吗?
我有一个hacky解决方案,这是}在我之前坚持一个无与伦比的\section.然后结束该\details部分.然后我不得不结束},因为roxygen认为它关闭了\details.Eeeeeurrrrrrrrgh.
是否可以在roxygen过程中将.R文件包含在我的包的数据目录中?
我在数据目录中放了几个.R文件.当它们使用data()获取时,它们会读入原始数据文件并执行一些转换.
简短版本:我可以使用Normal包装模拟文件吗?statsroxygen
长版本:我正在开发一个软件包,并试图通过在一个标题下收集一些具有公共输入/参数的函数来使文档更具可读性,这将是对该组的通用引用.每个功能仍应独立地供最终用户使用.
我把文档作为灵感Normal,给出了许多与正态分布相关的方法,例如stats::dnorm().
当我搜索时,?dnorm我发现帮助部分的名称Normal即使Normal看起来不是导出的函数或对象.
我试过的是将以下内容放入funs.R:
##' @rdname funs
##' @name funs
##' @aliases sum1
##' @aliases prod1
##' @title Two functions
##' @param x X
##' @param y Y
##' @return sum1 returns x+y
##' \cr
##' prod1 returns x*y
##' @examples
##' sum1(3,4)
##' prod1(3,4)
##' @export
sum1 <- function(x,y) x+y
##' @export
##' @rdname funs
prod1 <- function(x,y) x*y
Run Code Online (Sandbox Code Playgroud)
然后我继续 …
将逐项列表添加到roxygen2的适当语法是什么,例如,在@details部分?我可以创建一个乳胶列表环境吗?
似乎简单地忽略了换行符,即
#' @details text describing parameter inputs in more detail
#'
#' parameter 1: stuff
#'
#' parameter 2: stuff
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在编写一个包,它定义了一个新类,测量器和一个print方法,即print.surveyor.我的代码工作正常,我使用roxygen进行内联文档.但R CMD check发出警告:
在文档对象'print.surveyor'中使用但不在代码中使用的函数/方法:print
我使用了Hadley编写的以下两页作为灵感:
命名空间和文档功能,两者都说正确的语法是@method function-name class
所以我的问题是:print使用Roxygen 记录我的新类的方法的正确方法是什么?更具体地说,我如何摆脱警告?
这是我的代码:(评论的文档表明试图解决这个问题,但没有一个工作.)
#' 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)
}
Run Code Online (Sandbox Code Playgroud)
和氧化输出,即print.surveyor.Rd:
\name{print.surveyor}
\title{Prints surveyor object.}
\usage{print(x, ...)
#'}
\description{Prints surveyor object.}
\details{Prints surveyor object
#'} …Run Code Online (Sandbox Code Playgroud) 我已经阅读了Roxygen2 PDF以及这个网站,我对@method @ S3method @export和你如何使用它们来正确记录S3方法之间的区别感到迷茫.我
编写了以下示例进行讨论:1.我如何正确记录这些内容?
2.我如何模拟?print和其他通用函数的文档,这些函数显示所有特定于类的实现的用例(即方式?print显示'factor','table','function'的用法)
3.来自wiki页面:"所有导出的方法都需要@ S3method标记.它的格式与@method相同.这会导出方法,而不是函数 - 即泛型(myobject)将起作用,但generic.mymethod(myobject)不会."
我无法解释这一点.这似乎说如果标签指定不正确,函数/方法调用将无法正常工作?具体会打破什么?
MyHappyFunction = function( x , ... )
{
UseMethod( "MyHappyFunction" )
}
MyHappyFunction.lm = function( x , ... )
{
# do some magic
}
Run Code Online (Sandbox Code Playgroud) 如果我想导入包,是否必须手动将import()指令写入我的NAMESPACE文件?似乎roxygen2对我来说不会神奇地做到这一点,即使我在他的描述中将它们列为"Imports:".
这是一个非常愚蠢的问题,但我问,因为答案对我来说并不明显.
我roxygen2用来处理我的R包文档.当我想确保导出函数时,我@export在其roxygen块中添加了一个标记.后续运行roxygenize()将相应地编写NAMESPACE指令.
但是,我的包目前正在导入其他几个:
Depends:
R (>= 2.13.0),
ggplot2 (>= 0.8.9)
Imports:
RColorBrewer,
plyr,
gridExtra
Run Code Online (Sandbox Code Playgroud)
看来虽然roxygen2 会为导出的函数重写NAMESPACE指令,但它不会自动重写NAMESPACE以反映我指定的包应该在我的DESCRIPTION中导入.
RStudio是否支持任何自动化的氧模板创建?
在Emacs-ESS中,C-x C-o将为函数生成一个roxygen模板.例如,它会自动转换为:
foo <- function(x,y) x+y
Run Code Online (Sandbox Code Playgroud)
进入这个:
##' .. content for \description{} (no empty lines) ..
##'
##' .. content for \details{} ..
##' @title
##' @param x
##' @param y
##' @return
##' @author David
foo <- function(x,y) x+y
Run Code Online (Sandbox Code Playgroud)
RStudio中是否存在类似的功能?
更新
C-c C-o C-o我正在更新一个旧包并缩短了一堆很长的函数名.如何让用户知道旧函数已被弃用?我记录了所有内容roxygen2所以我想知道#' @alias我应该使用什么?思考?
我正在开发一个R包,使用devtools,testthat和roxygen2.我在数据文件夹(foo.txt和bar.csv)中有几个数据集.
我的文件结构如下所示:
/ mypackage
/ data
* foo.txt, bar.csv
/ inst
/ tests
* run-all.R, test_1.R
/ man
/ R
Run Code Online (Sandbox Code Playgroud)
我很确定'foo'和'bar'是正确记录的:
#' Foo data
#'
#' Sample foo data
#'
#' @name foo
#' @docType data
NULL
#' Bar data
#'
#' Sample bar data
#'
#' @name bar
#' @docType data
NULL
Run Code Online (Sandbox Code Playgroud)
我想在我的文档示例和单元测试中使用'foo'和'bar'中的数据.
例如,我想通过调用以下方法在我的测试中使用这些数据集:
data(foo)
data(bar)
expect_that(foo$col[1], equals(bar$col[1]))
Run Code Online (Sandbox Code Playgroud)
而且,我希望文档中的示例如下所示:
#' @examples
#' data(foo)
#' functionThatUsesFoo(foo)
Run Code Online (Sandbox Code Playgroud)
如果我在开发包时尝试调用data(foo),我会收到错误"data set'foo'not found".但是,如果我构建软件包,安装它并加载它 - 那么我可以使测试和示例工作.
我目前的解决方法是不运行示例:
#' @examples
#' \dontrun{data(foo)}
#' \dontrun{functionThatUsesFoo(foo)}
Run Code Online (Sandbox Code Playgroud)
在测试中,使用特定于本地计算机的路径预加载数据:
foo …Run Code Online (Sandbox Code Playgroud)