使用roxygen2的自动记录功能,虽然它很棒且有用,但它对roxygen2包版本的每次更改都很烦人.它通过在每个文件中放入roxygen2版本来更新我的所有文档文件.见下文.
% Generated by roxygen2 (4.1.1): do not edit by hand
% Please edit documentation in R/src.R
Run Code Online (Sandbox Code Playgroud)
这些更改显然不会影响代码/包,但会通过在源版本控制过程中添加噪声来影响源控件版本控制.
可以在某个地方关掉吗?
我正在努力学习R6类及其方法的文档.我的目标是在RStudio中获取方法的自动完成.目前,我只获取方法的名称,但没有通常使用roxygen2参数等记录函数的帮助信息.
目前,这是我的班级:
#' @importFrom R6 R6Class
MQParameters <- R6::R6Class(
'MQParameters',
public=list(
initialize=function(file_path=NA) {
private$location <- file_path
mq_parameters <- read.delim(file_path, stringsAsFactors=FALSE)
mq_parameters <-
setNames(mq_parameters$Value, mq_parameters$Parameter)
private$mq_version <- unname(mq_parameters['Version'])
private$fasta_file <-
gsub('\\\\', '/', strsplit(mq_parameters['Fasta file'], ';')[[1]])
},
# this method returns the version
getVersion=function() {
private$mq_version
},
# this methods returns the fastafile.
# @param new_param it is possible to rewrite the basedir.
getFastaFile=function(new_basedir=NA) {
if(is.na(new_basedir)) {
private$fasta_file
} else {
file.path(new_basedir, basename(private$fasta_file))
}
}
),
private=list(
location=NULL,
mq_version=NULL,
fasta_file=NULL …Run Code Online (Sandbox Code Playgroud) 一个简单的例子是我创建了一个扩展名show,这是一个S4基本方法.我不希望通过show在我的包中重新记录来导致消除歧义,我还想通过添加别名来合并我的扩展show的文档到新类的文档myPkgSpClass中show,myPkgSpClass-method.
#' @export
#' @aliases show,myPkgSpClass-method
#' @rdname myPkgSpClass-class
setMethod("show", "myPkgSpClass", function(object){ show(NA) })
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,这会在roxygen2构建文档期间导致严重警告,Rd files with duplicated alias 'show':因为show此包中有多个类扩展,并且roxygen2已自动将别名列表中的通用术语添加到所有相关*-class.Rd文件:
\alias{show}
\alias{show,myPkgSpClass-method}
Run Code Online (Sandbox Code Playgroud)
但我认为我不想在任何实例中使用通用别名,因为它会强制需要show在我的包和基础之间消除歧义show.此问题也适用于从其他包扩展的其他S4方法show.
如果我将所有特定于类的方法标记到同一个.Rd文件中,那么警告就会消失,但是模糊性仍然存在,因为show别名仍会自动添加到该文档条目中.如果我手动\alias{show}从.Rd文件中删除,那么问题似乎已解决,在roxygen期间没有警告R CMD check pkgname.那么如何让Roxygen2不添加通用别名呢?
其他背景:
这是从前一个问题构建的特定问题,用于将S4扩展导出/记录到基本方法: 是否需要在R包中导出基本方法扩展?文档含义?
关于使用Roxygen2记录S4方法/类的以下问题,它更具体,而不是包含在内:
我正在为我正在制作的R包记录我的一些函数.
我正在使用roxygen标记,尽管这与我的问题基本无关.
我已经将方程式放入我的文档中\deqn{...}.我的问题是:以后
有没有办法交叉引用这个等式?
例如,在我的Rd文件中:
\deqn{\label{test}
y = mx + b
}
Run Code Online (Sandbox Code Playgroud)
我以后可以这样做:
参考方程\ ref {test},...
我已经尝试了\eqref{test},\ref{test}(它们都得到了"未知的宏"并且没有得到链接),而且\link{test}(它抱怨它无法找到功能,test因为它实际上只是用于链接到其他功能).
否则,我担心我可能做一些哈克,并添加在-- (1)和Refer to equation (1) 手动的范围内\deqn的路文件等...
一般答案似乎是"不".(噢...)
但是,我可以写一个小插图并在那里使用"普通"乳胶/包装.无论如何,我刚刚注意到我在roxygen/Rd文件中使用的矩阵方程?myFunction在帮助版本中看起来很糟糕(它们只显示为文字乳胶源).这是一种耻辱,因为它们在pdf版本的帮助下看起来很漂亮.
@Iterator指出了条件文本的存在,所以我将在.Rd文件中进行ASCII数学运算,但在pdf手册/晕影中进行Latex数学运算.
该矩阵包定义用于相乘的矩阵,即由S4通用功能分派一大堆S4方法%*%,crossprod和tcrossprod.
如何导入"%*%"方法,以便在我自己的包中使用?我跑的时候这段代码失败了devtools::document():
#' @title my function
#'
#' @description Does magic Matrix stuff
#' @import methods
#' @importFrom Matrix "%*%" Diagonal
myfun <- function(x, y){
x %*% Diagonal(x=y)
}
Run Code Online (Sandbox Code Playgroud)
如果x是稀疏矩阵,我想确保此函数使用Matrix包中的稀疏矩阵乘法方法.但是当我运行时,devtools::document()我收到以下错误:
Updating mypackage documentation
Loading mypackage
Error: object ‘%*%’ is not exported by 'namespace:Matrix'
Run Code Online (Sandbox Code Playgroud) 我已经为自己使用了一个小包装,使用devtools一切都很顺利.但是,我试图对它运行R CMD Check,并且出现了一些错误,似乎是因为我的用法和示例使用了基础R中不在我的包中的函数,例如这里是我的最小函数,以及roxygen文档
#' Function to Sort a dataframe with a given list of columns
#' Cribbed from Spector, P. (2008). "Data Manipulation with R", UseR! Springer. Pg78
#' @param df Dataframe to be sorted
#' @param ... list of columns to sort on
#' @return A sorted dataframe
#' @author "Paul Hurley"
#' @export
#' @usage with(dataframe,sortframe(dataframe,column1, column2, column3))
#' @examples with(iris,sortframe(iris,Sepal.Length,Sepal.Width,Petal.Length))
sortframe<-function(df,...){df[do.call(order,list(...)),]}
Run Code Online (Sandbox Code Playgroud)
和R CMD检查给出
Undocumented arguments in documentation object 'sortframe'
'dataframe' 'sortframe(dataframe, column1, column2, column3)'
Documented arguments not …Run Code Online (Sandbox Code Playgroud) 我正在学习使用roxygen.我看到rd vignette提倡使用"_PACKAGE"来表示我正在创建包文档,并说"如果已经有一个名为pkgname()的函数,这也有效."
我也看过R包书的使用方法
NULL
Run Code Online (Sandbox Code Playgroud)
指定了@docType和@name,但是当我试图用任何一种方法制作一个玩具示例时,它并不像我期望的那样工作.
作为一个玩具示例,我想制作一个包含"hello()"函数的"hello"包.
我希望得到我的问候文件包同
?hello
Run Code Online (Sandbox Code Playgroud)
或者类似的东西
package?hello
Run Code Online (Sandbox Code Playgroud)
我希望得到有关所包含你好文档功能与
?hello()
Run Code Online (Sandbox Code Playgroud)
我哪里错了? - 使用roxygen实现,我试图查询文档的方式,不正确的期望,还是其他什么?
我已经查看了有关包文档和函数文档的问题,但对我来说仍然不清楚.
以下是我的玩具示例的一些细节:
你好/描述文件:
Package: hello
Type: Package
Title: A mostly empty package
Version: 0.1
Date: 2016-06-21
Authors@R: person("Some", "Person", email = "fake@madeup.org", role = c("aut", "cre"))
Description: More about what it does (maybe more than one line)
License: MIT
LazyData: TRUE
RoxygenNote: 5.0.1.9000
Run Code Online (Sandbox Code Playgroud)
你好/ R/hello.R
#' hello
#'
#' This is a mostly …Run Code Online (Sandbox Code Playgroud) 我使用的是写我的第一个R包装devtools和roxygen2在RStudio IDE.我遇到的问题与预览.Rd文件有关,当我"循环".R文件时.我正在使用devtools::document()以获取.Rd文件,但是当我尝试通过编写以下任何一个来预览帮助页面时:
help("FunctionName")
?FunctionName
Run Code Online (Sandbox Code Playgroud)
控制台显示消息"使用开发文档...",但帮助窗口中有一个空白区域.使用devtools:load_all()导致同样的问题.也许这与devtools在环境中加载包的方式有关,但是文档"Writing R Extensions"(预计不会被查阅使用roxygen)和Hadley Wickham的书籍"R包"都没有提供可行的解决方案.
我最近被指向Roxygen解决我的文档困境/懒惰.但是在这个闪亮的Roxygen2中,根据我的理解,它有点像它自己的东西.Hadley的包装工具需要使用Roxygen2,但在任何地方都没有通过走路的方式.
鉴于我在学习过程中从头开始:
是否有一个用户,对于新用户,有利于Roxygen而不是Roxygen2,或者Roxygen2在所有方面都更好?
如果有的话,有哪些资源用于学习(最好是那些不依赖于Roxygen先前知识的资源)?
Roxygen2是否与Roxygen向后兼容(这样投入学习和写作Roxygen的时间会延续下去)?
我正在创建一个包,对于S3方法,我使用它们导出它们
##' @method predict myclass
##' @export
predict.myclass <- function(object,...) { }
Run Code Online (Sandbox Code Playgroud)
现在当我加载包时,然后predict处理类的对象myclass,但predict.myclass不导出函数.在NAMESPACE我只能获得参赛作品S3method(predict,myclass).那么有没有一种方法可以导出predict.myclass,这样用户就可以获得predict.myclass他(她)predict.myclass在控制台中写入的代码?