我有一个正在尝试添加到包中的函数。我正在通过 生成文档devtools::document()。此函数和大约 70 个其他函数的 .Rd 文件已成功生成,但此函数未添加到命名空间中。
该文件可以在以下链接中找到,也许重要的是,该文件名为truncate.distribution.r。我还有许多其他函数的名称中带有句点,所以我几乎可以肯定这不是问题。
然而,当我浏览命名空间时,我注意到这一行S3method(truncate,distribution),并想知道相似的名称是否是巧合(即逗号,而不是句点)。我尝试从名称中删除句点,并重新生成文档和命名空间,一切都工作得很好 - 也就是说,该函数与包一起导出。
虽然更改后的名称有效,但我想了解它失败的原因以及如何防止将来出现类似的失败。另外,我喜欢原来的名字。:)
有人有什么想法吗?非常感激。
我在两台机器上使用 RStudio,具有相同的配置,甚至具有相同的 .Rproj 文件(来自 Dropbox)。
增量重建
默认情况下,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) 我在我的自定义 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 包,并且尝试包含包依赖项。该软件包在我的机器上安装并运行良好,但我已经安装了所有依赖项。当其他用户尝试安装但他们尚未安装所有依赖项时,他们会收到错误消息。
ERROR: dependency 'dplyr' is not available for package 'my_package'
Run Code Online (Sandbox Code Playgroud)
我正在通过 记录该包roxygen2。
我知道我应该在文件#'@import中包含行/R,并且它们会自动添加到DESCRIPTION和NAMESPACE文件中。
我的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 包时,我需要导入另一个 R 包 B。我使用 roxygen2 作为文档。
我的问题是,如果我有几个使用包 B 的 R 函数,我应该写
#' @import B
Run Code Online (Sandbox Code Playgroud)
每个函数都写一次,不然就很痛苦。
我想在 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并引入了膨胀。
有没有更好的办法; 一种不涉及大规模重复代码的方法?
编写带有格式的文档的标准方法code是使用\\code{}.
也就是说,#\' @param foo value passed on to \\code{bar()}变成
\n\n论据
\n\n
foo\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0值传递给bar()
但是,我见过一些包(即dplyr)使用反引号而不是\\code{}达到相同的效果。这要好得多,因为它不那么笨重,并且允许非常好的语法突出显示。
但是,如果我在自己的包上尝试这样做,反引号会被解释为...只是反引号,就像任何其他字符一样。
\ndplyr::across()例如,的文档以以下内容开头:
#\' @description\n#\' `across()` makes it easy to apply the same transformation to multiple [...]\nRun Code Online (Sandbox Code Playgroud)\n它被编译并在手册页中显示为:
\n\n\n描述
\n\n
across()可以轻松地将相同的转换应用于多个[...]
但如果我在我的包裹上尝试类似的东西,我会得到:
\n\n\n描述
\n`across()` 可以轻松地将相同的转换应用于多个 [...]
\n
奇怪的是,我已经glue为一个简单的 PR 分叉了该包(它还设法使用反引号进行代码格式化),如果我在本地构建该包,则反引号起作用(我得到code格式化)。我一生都无法弄清楚为什么它在那里起作用但对我的包裹不起作用。
那么,我需要修改一些设置才能使其正常工作吗?我检查了 …
前段时间我读过的地方devtools::document比roxygen2::roxygenize"复杂的包/坐标" 更好(这是我记得的),但不幸的是我现在找不到链接,当时我没有加深.
看看各自的帮助页面,我不清楚如何,所以我的问题是:如果有时候使用devtools::document而不是
在某些情况下更好roxygen2::roxygenize?哪种包装?
谢谢,卢卡
我试图通过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( "^ [[:阿尔法:]] +"
我想我错过了一些重要的步骤.
根据快捷方式帮助(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)