标签: roxygen2

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
查看次数

RStudio:构建和重新加载会在描述文件中的"建议"字段中添加空白行

每当我Build & Reload从RStudio的Build窗格运行时,我都会收到消息

==> Rcmd.exe INSTALL --no-multiarch rwiots    
Error: contains a blank line
Run Code Online (Sandbox Code Playgroud)

事实上,当我看时,我的DESCRIPTION文件在Suggests字段中包含一个空行.如果我删除它,它会在我尝试时再次创建Build & Reload.

Generate documentation with Roxygen勾选了选项,并在Configure...对话框中勾选了所有框.

我非常喜欢使用roxygen2记录我的函数并让RStudio构建我的NAMESPACE文件和我的DESCRIPTION文件的部分工作流程.那么我怎样才能解决这个非常奇怪的小问题呢?

非常感谢Rob Levy

r rstudio roxygen2

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

如何在Roxygen2中指明整理顺序?

使用带有devtools document函数的roxygen2文档会自动Collate:在包描述中生成一个字段,无论是否需要按特定顺序加载包库文件.

我正在使用一堆S4方法处理一个包,并且想要确保在使用它们的任何方法或其他类之前加载类定义,我知道我可以使用Collate列表,但我不知道如何以roxygen2文档格式表明这一点.

roxygen2手册提出了一些参考的@include标签,但看起来像它可能实际上只是包含在文档中的代码,例如,用于通过添加外部的例子@examples标志.这可以用于指定方法的整理顺序吗?

r documentation-generation roxygen2

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

如何配置RStudio包构建以跨多台计算机工作

这个问题已经被问由RStudio帮助页面上的其他用户在这里,但至今未收到答复.

基本上,我已经完成了所有步骤:

(1)安装Xcode

(2)下载并安装了命令行工具

(3)安装MacTex

(4)选择包含R包的目录及附带的描述文件.

这个包在我第一次用来构建它的Mac上编译得很好.然而,现在我被告知RStudio无法检测到描述文件,即使它正好位于构建目录中.我附上了截图.

我得到的错误信息是:

ERROR: The build directory does not contain a DESCRIPTION file so cannot be built as a package.
Run Code Online (Sandbox Code Playgroud)

谁知道我错过了什么?我附上了截图供参考.完全披露:这适用于商业应用.

箭头指出构造目录中存在DESCRIPTION文件

r rstudio roxygen2

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

通过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
查看次数

将@example标记与roxygen2一起使用时文件的位置

使用roxygen2记录函数时,可以将示例放在单独的文件中.

请参阅此处:http: //r-pkgs.had.co.nz/man.html"您可以将它们放在单独的文件中,并使用@example path/relative/to/packge/root,而不是直接在文档中包含示例将它们插入文档中."

在这里:http://roxygen.org/roxygen2-manual.pdf

例如

#' Add together two numbers.
#' 
#' @param x A number.
#' @param y A number.
#' @return The sum of \code{x} and \code{y}.
#' @example /path/to/example/add.R
add <- function(x, y) {
  x + y
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:应该使用什么路径来存储示例R文件?

r roxygen2

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

如何在R包构建中压缩保存

我试图在R包中包含一个(有些)大数据集.在Rstudio检查期间我一直收到警告说我可以通过压缩来节省空间:

* checking data for ASCII and uncompressed saves ... WARNING

  Note: significantly better compression could be obtained
        by using R CMD build --resave-data
          old_size new_size compress
  slp.rda    499Kb    310Kb    bzip2
  sst.rda    1.3Mb    977Kb       xz
Run Code Online (Sandbox Code Playgroud)

我已经尝试添加-- resave-data到RStudio的"配置Buid工具"无效.

在此输入图像描述

r devtools rstudio roxygen2

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

在构建R包期间没有创建手动pdf

我看到我最近的包构建不再创建手册,即使我没有在构建设置中添加"--no-manual".之前我没有遇到过这个问题 - 我最近更新了devtools和roxygen2.

我错过了什么吗?

以下是我设置项目选项的方法:

在此输入图像描述

r devtools rstudio roxygen2

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

R-“数据”不是从“名称空间:my_package”导出的对象

我正在编写一个使用外部数据的函数,如下所示:首先,它检查数据是否在data/文件夹中,如果不在,则创建data/文件夹,然后从github下载文件;如果数据已经在data/文件夹中,它将对其进行读取并执行计算。

问题是,当我运行时:

devtools::check()
Run Code Online (Sandbox Code Playgroud)

它返回:

Error: 'data' is not an exported object from 'namespace:my_package'
Run Code Online (Sandbox Code Playgroud)

我应该手动穿上东西NAMESPACE吗?

一个例子:

my_function <- function(x){
if(file.exists("data/data.csv")){
    my_function_calculation(x = x)
  } else {
    print("Downloading source data...")
    require(RCurl)
    url_base <-
 getURL("https://raw.githubusercontent.com/my_repository/data.csv")
    dir.create(paste0(getwd(),"/data"))
    write.table(url_base,"data/data.csv", sep = ",", quote = FALSE)
    my_function_calculation(x = x)
  }
}

my_function_calculation <- function(x = x){
    data <- NULL
    data <- suppressMessages(fread("data/data.csv"))
    #Here, I use data...
    return(data)
}
Run Code Online (Sandbox Code Playgroud)

namespaces r devtools roxygen2

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

由RcppArmadillo.package.skeleton创建的NAMESPACE选项会导致错误

我正在创建一个包含Rcpp函数的R包,这取决于RcppArmadillo,所以我首先生成包骨架RcppArmadillo.package.skeleton.但是,当roxygenize我的包裹,它给我一个错误如下所示.

R代码

library(roxygen2)
library(RcppArmadillo)
library(Rcpp)
RcppArmadillo.package.skeleton(name = "prac_181206", example_code = FALSE)
roxygenize(package.dir =  "prac_181206", roclets = "rd")
Run Code Online (Sandbox Code Playgroud)

错误

Error in getDLLRegisteredRoutines.DLLInfo(dll, addNames = FALSE) : 
  must specify DLL via a “DLLInfo” object. See getLoadedDLLs()
Run Code Online (Sandbox Code Playgroud)

花了一些时间后,我想通过删除文件中的.registration选项可以解决这个问题,NAMESPACE如下所示.

原始NAMESPACE文件

useDynLib(prac_181206, .registration=TRUE)
importFrom(Rcpp, evalCpp)
exportPattern("^[[:alpha:]]+")
Run Code Online (Sandbox Code Playgroud)

简而言之,在更改上面的第一行后useDynLib(prac_181206),它工作正常,但我不明白错误的含义以及我的解决方案的工作原理.

你能帮我解决这个问题吗?我很感激!

因为这是一个玩具示例,希望可以重现,我没有包含上面创建的任何其他功能mansrc文件夹RcppArmadillo.package.skeleton.

仅供参考,有关我平台的相关信息是

  • Windows 7 x64
  • R-3.5.1,Rstudio-1.1.423
  • Rcpp-0.12.19,RcppArmadillo-0.9.100.5.0
  • roxygen2-6.1.1

r armadillo rcpp roxygen2 r-package

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