标签: roxygen

roxygen docs中的任意部分

Roxygen似乎工作的方式是第一行是\title,其他一切都在\details,然后任何@foo指令处理这些事情.但R文档比这更丰富.我可以拥有"\section{Llamas}{Are they ungulates?}".Rd文件.

但我无法让Roxygen做任何其他事情而不是将其全部包装在\ details中.我错过了什么吗?

我有一个hacky解决方案,这是}在我之前坚持一个无与伦比的\section.然后结束该\details部分.然后我不得不结束},因为roxygen认为它关闭了\details.Eeeeeurrrrrrrrgh.

r roxygen

93
推荐指数
1
解决办法
3740
查看次数

如何使用roxygen记录数据集?

是否可以在roxygen过程中将.R文件包含在我的包的数据目录中?

我在数据目录中放了几个.R文件.当它们使用data()获取时,它们会读入原始数据文件并执行一些转换.

r documentation-generation roxygen r-package

51
推荐指数
3
解决办法
9676
查看次数

一个.Rd文件中的多个函数

简短版本:我可以使用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)

然后我继续 …

documentation r package roxygen roxygen2

48
推荐指数
2
解决办法
7928
查看次数

在Roxygen中记录时:如何在@details中创建逐项列表?

将逐项列表添加到roxygen2的适当语法是什么,例如,在@details部分?我可以创建一个乳胶列表环境吗?

似乎简单地忽略了换行符,即

#' @details text describing parameter inputs in more detail
#'
#' parameter 1: stuff
#' 
#' parameter 2: stuff
Run Code Online (Sandbox Code Playgroud)

谢谢!

documentation r roxygen

46
推荐指数
2
解决办法
1万
查看次数

如何使用Roxygen从不同的包中正确记录泛型的S3方法?

我正在编写一个包,它定义了一个新类,测量器和一个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)

r roxygen

45
推荐指数
2
解决办法
6565
查看次数

Roxygen2 - 如何正确记录S3方法

我已经阅读了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)

r roxygen roxygen2

45
推荐指数
2
解决办法
1万
查看次数

roxygen2会自动为"Imports:"包编写NAMESPACE指令吗?

tl;我的问题的博士版本

如果我想导入包,是否必须手动将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中导入.

r roxygen roxygen2

45
推荐指数
1
解决办法
8692
查看次数

RStudio可以自动为函数生成一个roxygen模板吗?

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中是否存在类似的功能?

更新

  • ESS 12.09-2开始,命令已更改为C-c C-o C-o
  • 此功能已在Rstudio中实现:CTRL + ALT + SHIFT + R.

r roxygen rstudio roxygen2

38
推荐指数
2
解决办法
4968
查看次数

在新版本的软件包中重命名函数时,是否有最佳/推荐的做法?

我正在更新一个旧包并缩短了一堆很长的函数名.如何让用户知道旧函数已被弃用?我记录了所有内容roxygen2所以我想知道#' @alias我应该使用什么?思考?

r roxygen

37
推荐指数
3
解决办法
2017
查看次数

是否可以在testthat测试或run_examples()中使用R包数据?

我正在开发一个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)

r devtools roxygen roxygen2

31
推荐指数
1
解决办法
4595
查看次数