标签: roxygen2

函数未添加到 NAMESPACE

我有一个正在尝试添加到包中的函数。我正在通过 生成文档devtools::document()。此函数和大约 70 个其他函数的 .Rd 文件已成功生成,但此函数未添加到命名空间中。

该文件可以在以下链接中找到,也许重要的是,该文件名为truncate.distribution.r。我还有许多其他函数的名称中带有句点,所以我几乎可以肯定这不是问题。

然而,当我浏览命名空间时,我注意到这一行S3method(truncate,distribution),并想知道相似的名称是否是巧合(即逗号,而不是句点)。我尝试从名称中删除句点,并重新生成文档和命名空间,一切都工作得很好 - 也就是说,该函数与包一起导出。

虽然更改后的名称有效,但我想了解它失败的原因以及如何防止将来出现类似的失败。另外,我喜欢原来的名字。:)

有人有什么想法吗?非常感激。

r roxygen2 r-package

4
推荐指数
1
解决办法
912
查看次数

为什么 Build & Reload 会重新编译所有 C++ 文件,即使这些文件没有更改?

我在两台机器上使用 RStudio,具有相同的配置,甚至具有相同的 .Rproj 文件(来自 Dropbox)。

RStudio 网页

增量重建

默认情况下,RStudio 执行包的增量重建。C++ 文件仅在更改或任何头文件更改时才会重新编译。这为增量开发提供了快速周转。

在一台机器上,如果我修改一个简单的 .R 文件,或者即使我根本不修改任何文件,并选择Build & Reload,那么 C++ 不会重新编译。

然而,另一方面,我得到:

没有更改文件的情况下:

==> devtools::document(roclets=c('rd', 'collate', 'namespace', 'vignette'))

Updating quanteda documentation
Loading quanteda
'/Library/Frameworks/R.framework/Resources/bin/R' CMD INSTALL '/Users/kbenoit/Dropbox (Personal)/GitHub/quanteda' --library='/var/folders/46/zfn6gwj15d3_n6dhyy1cvwc00000gp/T//RtmpowXjeu/devtools_install_cd475c156859' --no-R --no-data --no-help --no-demo --no-inst --no-docs --no-exec --no-multiarch --no-test-load --preclean
Re-compiling quanteda
clang++ -std=c++11 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I. -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -I"/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.3/Resources/library/RcppParallel/include" -I"/Library/Frameworks/R.framework/Versions/3.3/Resources/library/RcppArmadillo/include"   -fPIC  -Wall -mtune=core2 -g -O2 -c RcppExports.cpp -o RcppExports.o
Run Code Online (Sandbox Code Playgroud)

ETC

更改了一个.R文件:(
这是一个数据文档R文件,没有实际功能)

==> Rcpp::compileAttributes()

* …
Run Code Online (Sandbox Code Playgroud)

rcpp rstudio roxygen2

4
推荐指数
1
解决办法
810
查看次数

为什么 devtools 会警告我 @slot 需要名称和描述

我在我的自定义 R 包中设置了以下类:

#' A stock.returns class is an xts of stock(s) returns, a timeframe and the currency used.
#'
#' @slot xts_returns An xts of stock returns (potentially multiple stocks)
#' @slot timeframe
#' @slot currency Any three letter currency, or "Local"
#' @include timeframe.R
#' @export
stock.returns <- setClass(
    Class = "stock.returns",
    slots = c(xts_returns = "xts", timeframe = "timeframe", currency = "character"),
    prototype = prototype(xts_returns = xts::xts(, order.by = c(lubridate::today())), timeframe = timeframe(), currency = "Local")
) …
Run Code Online (Sandbox Code Playgroud)

r devtools roxygen2

4
推荐指数
1
解决办法
731
查看次数

将依赖项正确添加到 r 包中,以便它们自动安装

我正在制作我的第一个 R 包,并且尝试包含包依赖项。该软件包在我的机器上安装并运行良好,但我已经安装了所有依赖项。当其他用户尝试安装但他们尚未安装所有依赖项时,他们会收到错误消息。

ERROR: dependency 'dplyr' is not available for package 'my_package'
Run Code Online (Sandbox Code Playgroud)

我正在通过 记录该包roxygen2

我知道我应该在文件#'@import中包含行/R,并且它们会自动添加到DESCRIPTIONNAMESPACE文件中。

我的DESCRIPTION文件如下所示:

Package: my_package
Title: What the Package Does (one line, title case)
Version: 0.0.0.9000
Authors@R: person("First", "Last", email = "first.last@example.com", role = c("aut", "cre"))
Description: What the package does (one paragraph).
Depends: R (>= 3.4.1)
License: What license is it under?
Encoding: UTF-8
LazyData: true
RoxygenNote: 6.0.1
Imports: dplyr,
    descr
Run Code Online (Sandbox Code Playgroud)

我的NAMESPACE看起来像这样: …

r roxygen2 r-package

4
推荐指数
1
解决办法
4893
查看次数

在多个 R 文件中导入相同的 PACKAGE

在编写 R 包时,我需要导入另一个 R 包 B。我使用 roxygen2 作为文档。

我的问题是,如果我有几个使用包 B 的 R 函数,我应该写

#' @import B
Run Code Online (Sandbox Code Playgroud)

每个函数都写一次,不然就很痛苦。

r roxygen2

4
推荐指数
1
解决办法
374
查看次数

使用 roxygen2 在 R 包中具有相同的功能但有两个不同的名称?

我想在 roxygen2 制作的 R 包中创建两个完全相同但名称不同的函数。

期望的结果

非常明确地说,假设

first <- function(x) {
  x + 2
}
Run Code Online (Sandbox Code Playgroud)

我想要另一个函数,second这样

identical(first, second)
# [1] TRUE
Run Code Online (Sandbox Code Playgroud)

到目前为止我所知道的

可以为函数指定别名,但这并不意味着它的别名是可调用函数 - 相反,它意味着您可以调用?myalias显示原始函数的帮助文件。但myalias不是包内可调用函数 - 即您实际上不能将它用于除?.

来自哈德利的文档:

别名是可以与 ? 一起使用的主题的另一个名称。

一个不优雅的解决方案

通过暴力破解可以使用两个不同名称的相同函数,即通过复制声明原始函数的文件并简单地在重复代码中更改其名称。

这显然很乏味,违反了DRY并引入了膨胀。

问题

有没有更好的办法; 一种不涉及大规模重复代码的方法?

r roxygen2

4
推荐指数
1
解决办法
473
查看次数

如何让 roxygen2 将反引号解释为代码格式?

编写带有格式的文档的标准方法code是使用\\code{}.

\n

也就是说,#\' @param foo value passed on to \\code{bar()}变成

\n
\n

论据

\n

foo\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0值传递给bar()

\n
\n

但是,我见过一些包(即dplyr)使用反引号而不是\\code{}达到相同的效果。这要好得多,因为它不那么笨重,并且允许非常好的语法突出显示。

\n

但是,如果我在自己的包上尝试这样做,反引号会被解释为...只是反引号,就像任何其他字符一样。

\n

dplyr::across()例如,的文档以以下内容开头:

\n
#\' @description\n#\' `across()` makes it easy to apply the same transformation to multiple [...]\n
Run Code Online (Sandbox Code Playgroud)\n

它被编译并在手册页中显示为:

\n
\n

描述

\n

across()可以轻松地将相同的转换应用于多个[...]

\n
\n

但如果我在我的包裹上尝试类似的东西,我会得到:

\n
\n

描述

\n

`across()` 可以轻松地将相同的转换应用于多个 [...]

\n
\n

奇怪的是,我已经glue为一个简单的 PR 分叉了该包(它还设法使用反引号进行代码格式化),如果我在本地构建该包,则反引号起作用(我得到code格式化)。我一生都无法弄清楚为什么它在那里起作用但对我的包裹不起作用。

\n
\n

那么,我需要修改一些设置才能使其正常工作吗?我检查了 …

formatting r roxygen2

4
推荐指数
1
解决办法
351
查看次数

devtools :: document vs roxygen2 :: roxygenize

前段时间我读过的地方devtools::documentroxygen2::roxygenize"复杂的包/坐标" 更好(这是我记得的),但不幸的是我现在找不到链接,当时我没有加深.

看看各自的帮助页面,我不清楚如何,所以我的问题是:如果有时候使用devtools::document而不是 在某些情况下更好roxygen2::roxygenize?哪种包装?

谢谢,卢卡

r devtools roxygen2

3
推荐指数
1
解决办法
788
查看次数

roxygen2和RStudio,没有为函数创建文档

我试图通过roxygen2在包中添加文档.我能够成功创建packag并且在加载时也可以使用这些功能.以下是我对如何操作的理解,我在RStudio上创建了一个空的R-Package项目,然后有一个名为"getSomething.R"的源文件.内容如下,

#' Test function to ask on stackoverflow
#' 
#' \code{getSomething} Does something to get something.
#' 
#' @param a param 1
#' @param b param 2
#' 
#'

getSomething <- function(a,b){
  return(a*b)
}
Run Code Online (Sandbox Code Playgroud)

现在,我构建并加载包,理想情况下,应该在/ man文件夹中使用.Rd文件创建包,并且还要执行"?getSomething".但是没有使用该命令,也没有创建Rd文件.我在这里错过了什么吗?在我的原始项目中,我添加了一些依赖包.

以下是解密文件,

Package: testPackage
Type: Package
Title: Learn how to use roxygen2.
Version: 1.0.1
Date: 2014-11-27
Author: amj2403
Maintainer: amj2403 <emailid>
Description: Write something here
License: NA
Depends:
    R (>= 3.0.0),
    rjson,
    futile.logger,
    RCurl
Run Code Online (Sandbox Code Playgroud)

还有NAMESPACE文件,

exportPattern( "^ [[:阿尔法:]] +"

我想我错过了一些重要的步骤.

r roxygen rstudio roxygen2

3
推荐指数
1
解决办法
2244
查看次数

Ctrl + Shift + D不运行文档例程

根据快捷方式帮助(Alt+ Shift+ K)组合Ctrl+ Shift+ D应该运行文档例程.(这也是Hadley Wickhams的第5.1节"R包" http://runsheng.github.io/attachment/r-packages.pdf中所说的.)但是在我的RStudio设置中,它会使所选择的行复杂化(所以我不喜欢不相信这是一个全局使用问题,在这里得出答案:Visual Studio无法识别组合键.在https://support.rstudio.com/hc/en-us/community/posts/201819358-Ctrl-Shift-D-doesn-t-run-document-in-preview-release问题完全是靠一个人,但没有解决方案.我如何让RStudio做它应该做的事情?


我正在使用RStudio版本0.99.902并sessionInfo()给出:

R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

locale:
[1] LC_COLLATE=German_Germany.1252  LC_CTYPE=German_Germany.1252   
[3] LC_MONETARY=German_Germany.1252 LC_NUMERIC=C                   
[5] LC_TIME=German_Germany.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] hmi_0.1.0       roxygen2_5.0.1  coda_0.18-1     MASS_7.3-45    devtools_1.12.0

loaded via a namespace (and not attached):
[1] magrittr_1.5    tools_3.3.1     withr_1.0.2     rstudioapi_0.6 …
Run Code Online (Sandbox Code Playgroud)

r rstudio roxygen2

3
推荐指数
1
解决办法
708
查看次数

标签 统计

roxygen2 ×10

r ×9

rstudio ×3

devtools ×2

r-package ×2

formatting ×1

rcpp ×1

roxygen ×1