我是roxygen的新手,我很难看到如何使用它来快速创建一个新的/自定义包.
即我想知道最低要求是制作一个名为package1using 的包devtools,roxygen2/3以便我可以运行命令
require(package1)
fun1(20)
fun2(20)
Run Code Online (Sandbox Code Playgroud)
分别生成2000和4000个随机法线
让我们举一个最简单的例子.
如果我有两个功能fun1和fun2
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) 每当我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
使用带有devtools document函数的roxygen2文档会自动Collate:在包描述中生成一个字段,无论是否需要按特定顺序加载包库文件.
我正在使用一堆S4方法处理一个包,并且想要确保在使用它们的任何方法或其他类之前加载类定义,我知道我可以使用Collate列表,但我不知道如何以roxygen2文档格式表明这一点.
该roxygen2手册提出了一些参考的@include标签,但看起来像它可能实际上只是包含在文档中的代码,例如,用于通过添加外部的例子@examples标志.这可以用于指定方法的整理顺序吗?
这个问题已经被问由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)
谁知道我错过了什么?我附上了截图供参考.完全披露:这适用于商业应用.

要生成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)
在这里,参数arg1和arg2由一个空格字符分割.这导致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{...},但没有一个按预期工作.
有没有办法在我的目标中创建输出?也许是一些引入空间的逃脱角色?
谢谢.
斯文
使用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包中包含一个(有些)大数据集.在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工具"无效.
我看到我最近的包构建不再创建手册,即使我没有在构建设置中添加"--no-manual".之前我没有遇到过这个问题 - 我最近更新了devtools和roxygen2.
我错过了什么吗?
以下是我设置项目选项的方法:
我正在编写一个使用外部数据的函数,如下所示:首先,它检查数据是否在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) 我正在创建一个包含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),它工作正常,但我不明白错误的含义以及我的解决方案的工作原理.
你能帮我解决这个问题吗?我很感激!
因为这是一个玩具示例,希望可以重现,我没有包含上面创建的任何其他功能man或src文件夹RcppArmadillo.package.skeleton.
仅供参考,有关我平台的相关信息是