标签: roxygen

devtools roxygen包创建和rd文档

我是roxygen的新手,我很难看到如何使用它来快速创建一个新的/自定义包.

即我想知道最低要求是制作一个名为package1using 的包devtools,roxygen2/3以便我可以运行命令

require(package1)
fun1(20)
fun2(20)
Run Code Online (Sandbox Code Playgroud)

分别生成2000和4000个随机法线

让我们举一个最简单的例子.

如果我有两个功能fun1fun2

fun1 <- function(x){
    rnorm(100*x)
}
Run Code Online (Sandbox Code Playgroud)

fun2 <- function(y){
    rnorm(200*y)
}
Run Code Online (Sandbox Code Playgroud)

params是数字,返回值是数字.我很确定这不是一个S3方法,让我们调用标题fun1和fun2 ....我不太确定我需要提供的其他信息.我可以将fun1和fun2放在单独的.R文件中并添加abit #'但不确定包含roxygen的所有相关要求,也不确定要包含哪些相关requiremetns以及如何使用它来创建rd文档以与包一起使用.我假设名称空间只有名称fun1和fun2?包裹描述只是一些与我有关的通用信息......以及包裹的功能?

任何一步一步的指南都会很高兴收到.

编辑:以下是我开始的距离......

我可以得到以下内容来创建一个pacakge ...但是不能使用roxygen来制作文档......

package.skeleton(list = c("fun1","fun2"), name = "package1")
Run Code Online (Sandbox Code Playgroud)

这里是我不确定我是否错过了一堆步骤......

roxygenise("package1")
Run Code Online (Sandbox Code Playgroud)

因此,当尝试安装时,我收到以下错误消息

system("R CMD INSTALL package1")
* installing to library ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library’
* installing *source* package ‘package1’ ...
** R
** preparing package for lazy loading
** help
Warning: /path.to.package/package1/man/package1-package.Rd:32: All text must be in …
Run Code Online (Sandbox Code Playgroud)

r devtools rd roxygen roxygen2

8
推荐指数
1
解决办法
5415
查看次数

通过roxygen2在R文档中生成具有多个参数的项目

要生成R文档文件(.Rd),我使用Rt 3.0.2,Linux 3.11,devtools 1.5,roxygen2 4.0.1的软件包RStudio/Document选项.

目的

我想在文档文件中描述函数的多个参数,例如在此示例中:

\arguments{
  \item{arg1, arg2}{Description}
}
Run Code Online (Sandbox Code Playgroud)

在这里,参数arg1arg2由一个空格字符分割.这导致HTML版本中的自动换行符.

问题

使用RStudio/Document选项,两个参数之间的空格将第二个参数放在"描述"部分中,例如:

#' @param arg1, arg2 Description
Run Code Online (Sandbox Code Playgroud)

会变成

\arguments{
  \item{arg1,}{arg2 Description}
}
Run Code Online (Sandbox Code Playgroud)

不恰当的解决方案

我想出将两个参数保留在'参数'部分内的唯一方法是不按空格分割,例如:

#' @param arg1,arg2 Description
Run Code Online (Sandbox Code Playgroud)

会变成

\arguments{
  \item{arg1,arg2}{Description}
}
Run Code Online (Sandbox Code Playgroud)

这是不希望的,因为有了更多的参数,带有参数的'column'会占用大量空间.我试图逃避这个空间,\或者\\包括所有的争论\code{...},但没有一个按预期工作.

有没有办法在我的目标中创建输出?也许是一些引入空间的逃脱角色?

谢谢.
斯文

r devtools rd roxygen roxygen2

8
推荐指数
2
解决办法
705
查看次数

有没有办法自动更新R包中的文档?

几个月前我使用'package.skeleton()'生成.Rd帮助文件.我已经编辑了这些文件,我也更改了功能,删除了一些功能,添加了其他功能.是否有自动更新Rd文件的功能?

更新

一个很好的软件包刚刚发布,名为Rd2roxygen,由作者Yihui Xie在他的博客上描述.

顾名思义,这个包允许用户追溯地将当前包含在.Rd中的文档插入到.R文件中.对于学习roxygen和将目前正在开发的软件包转换为R软件包而言,这听起来很有前景.呜呜.谢谢一惠!

根据Joshua和Yihui的答案,答案似乎是: roxygen允许根据源.R代码的变化自动更新Rd文件等,如果我目前不使用roxygen,Rd2roxygen可以帮助我迁移.

r manual package roxygen

7
推荐指数
2
解决办法
426
查看次数

保留示例部分中的缩进

Roxygen使我的工作变得更加容易,并且在大多数情况下都非常直观.我从未弄清楚的一件事是如何在@examples部分保留缩进以便roxygenize("myPackage")包含结果

#' @examples
#' sapply(1:10, function(i){
#'     x <- rbind(matrix(rnorm(20), 10, 2),
#'                matrix(rnorm(20), 10, 2) + i)
#'     myFunc(x)
#' }
Run Code Online (Sandbox Code Playgroud)

将会

\examples{sapply(1:10, function(i){
    x <- rbind(matrix(rnorm(20), 10, 2),
               matrix(rnorm(20), 10, 2) + i)
    myFunc(x)
}}
Run Code Online (Sandbox Code Playgroud)

代替

\examples{sapply(1:10, function(i){
x <- rbind(matrix(rnorm(20), 10, 2),
matrix(rnorm(20), 10, 2) + i)
myFunc(x)
}}
Run Code Online (Sandbox Code Playgroud)

这是一个小细节,但它使所有但最简单的例子不必要地难以阅读,所以如果有人可以帮助我,我会很感激.

编辑:此错误已在更高版本的roxygen中得到纠正.

r roxygen

7
推荐指数
1
解决办法
262
查看次数

roxygen2"错误:title需要一个值"

我收到了一个roxygenize()我无法理解的错误.我有一个我的杂项函数包,其中.Rd文件是通过roxygen生成的.

错误是Error: titlerequires a value,这表明没有@title标签.但是文件中有一个@title标签kmmisc-package.R,所以我不确定是什么问题.

kmmisc-package.R 包含:

##' Miscellaneous Functions
##' 
##' \tabular{ll}{
##' Package: \tab kmmisc\cr
##' Type: \tab Package\cr
##' Version: \tab 0.1-2\cr
##' Date: \tab 2011-10-06\cr    
##' License: \tab GPL-2\cr
##' LazyLoad: \tab yes\cr
##' LazyData: \tab yes\cr
##' }
##' 
##' @author Me \email{my@@email}
##' 
##' Maintainer: Me \email{my@@email}
##'
##' @name kmmisc-package
##' @docType package
##' @title KM Misc
##' @keywords package
##' 
NULL
Run Code Online (Sandbox Code Playgroud)

我正在使用R …

r roxygen roxygen2

6
推荐指数
1
解决办法
848
查看次数

使用roxygen记录setter函数

我有一个功能,除了attr任何R对象的唯一广告.基础演示:

#' Setter function
#' @param x an R object
#' @param value a character value to set
#' @export
`foo<-` <- function(x, value){
    attr(x, 'foo') <- value
    return(x)
}
Run Code Online (Sandbox Code Playgroud)

这有点像魅力,除了生成一个好的Rd文件,相关部分:

\usage{
  foo(var, value) <- value
}
Run Code Online (Sandbox Code Playgroud)

当然,它会在R CMD check应该运行时触发警告foo(var) <- value.

任何提示都会非常有意义!


更新:感谢richierocks似乎有一个修复

documentation setter r roxygen roxygen2

6
推荐指数
1
解决办法
1050
查看次数

roxygen2 + cygwin +默认参数=截断的`\ usage`部分

我有一个R的软件包我一直在Linux下开发,而且我在Windows下测试它的时候已经到了.

文档是使用roxygen完成的,我正在使用cygwin来构建软件包.

问题是,当我roxygenise('test-package'),roxygen \usage将文档的部分截断为一个字符.它对一些但不是我的所有功能都这样做,我无法弄清楚这种模式.

roxygenise('test-package')在Linux或Windows下运行相同的命令(即从R提示符)时不会发生这种情况- 只是在Windows下的Cygwin(使用R devtools +来自Windows的命令提示符对我来说不是一个选项 - 它是Makefile的一个大项目的一部分等等).

在所有情况下,我使用roxygen v2.2.2.


更新:

对于具有默认参数的任何函数,都会出现这种情况.


我把它归结为一个可重复的例子,尽可能地减少以解决问题:

  1. 来自R:

    # this function used to trim strings, but I've stripped it right down
    # to eliminate it as a cause of the problem
    trim <- function(x='asdf')
    {
        return( x )
    }
    package.skeleton('test')
    
    Run Code Online (Sandbox Code Playgroud)
  2. 修改trim.R(在test/R中)并将以下roxygen添加到顶部,因此文件如下所示:

    #' trim white spaces from a string
    #'
    #' @param x string or vector of strings to trim
    #' @return x trimmed.
    #' @export
    trim …
    Run Code Online (Sandbox Code Playgroud)

cygwin r roxygen roxygen2

6
推荐指数
1
解决办法
170
查看次数

Roxygen 导入/依赖的最佳实践?

我正在编写一个用于访问私有 API 的小型便利包,并且正在使用httr函数来处理请求。我还使用 Roxygen 来处理文档等。我正在导入httr这样的函数:

#' Get a page of data from the specified endpoint.
#' @keywords internal
#' @importFrom httr GET
#'
get_data <- function(url, headers, page_number) {
  # Add querystring for page
  url_with_page <- paste0(url, "?page=", page_number)
  message("Downloading: ", url_with_page)
  # Get API response
  response <- GET(url_with_page, headers)
  return(response)
}
Run Code Online (Sandbox Code Playgroud)

但是,当您尝试在没有预加载包的情况下运行包时,出现命名空间错误:

Error in get_data(url, headers, 1) : 
  could not find function "GET"
Run Code Online (Sandbox Code Playgroud)

我通常会尊重哈德利在这类事情上的专业知识,但这是否是使用该Depends领域以及/而不是使用该领域的好案例Imports

编辑:我的 NAMESPACE …

r roxygen

6
推荐指数
0
解决办法
4430
查看次数

包中包含非英文字符函数时的编码问题

我正在构建自己的包,但我一直遇到编码问题,因为我的包中的函数具有非英语(非 ASCII)字符。

从本质上讲,韩文字符是我包中许多功能的一部分。示例函数:

library(rvest)
sampleprob <- function(url) {
  # sample url: "http://dart.fss.or.kr/dsaf001/main.do?rcpNo=20200330003851"
  result <- grepl("?????? ??", html_text(read_html(url)))
  return(result)
}
Run Code Online (Sandbox Code Playgroud)

但是,在安装软件包时,我遇到了编码问题。

我创建了一个示例包 ( https://github.com/hyk0127/KorEncod/ ),只有一个函数(如上所示),并将其上传到我的 github 页面上作为一个可重现的示例。我运行以下代码进行安装:

library(devtools)
install_github("hyk0127/KorEncod")
Run Code Online (Sandbox Code Playgroud)

以下是我看到的错误消息

Error : (converted from warning) unable to re-encode 'hello.R' line 7
ERROR: unable to collate and parse R files for package 'KorEncod'
* removing 'C:/Users/myname/Documents/R/win-library/3.6/KorEncod'
* restoring previous 'C:/Users/myname/Documents/R/win-library/3.6/KorEncod'
Error: Failed to install 'KorEncod' from GitHub:
  (converted from warning) installation of package ‘C:/Users/myname/AppData/Local/Temp/RtmpmS5ZOe/file48c02d205c44/KorEncod_0.1.0.tar.gz’ had non-zero exit status
Run Code Online (Sandbox Code Playgroud)

错误信息 aboutline 7 …

encoding r package roxygen

6
推荐指数
1
解决办法
155
查看次数

@title Roxygen 中缺少名字

我有 R6Class 的文档:

#' Root component that don't have parent,
#'
#' It should not be used directly, only using \code{\link{pkg::component}} function.
#'
#' @name BaseComponent
#' @importFrom R6 R6Class
#' @docType class

#' @keywords components, architecture, structure
Run Code Online (Sandbox Code Playgroud)

和氧气显示警告:

警告:[c:\projects\pkg\R\components.R:1] @title 缺少名称

我不知道为什么它显示第 1 行,我的代码不在第 1 行。

添加 @title 不会改变任何内容,我不断收到此警告。

r roxygen

5
推荐指数
1
解决办法
2379
查看次数

标签 统计

r ×10

roxygen ×10

roxygen2 ×5

devtools ×2

package ×2

rd ×2

cygwin ×1

documentation ×1

encoding ×1

manual ×1

setter ×1