我正在尝试使用knitr基于具有for循环的R脚本生成HTML报告.我想从for循环中的注释生成markdown注释,但我不确定它是否可行.
这是一个简单的例子,这是在test.R中:
for (i in 1:5) {
## This is a heading for `i`
#' This is a comment for `i`
print(i)
}
Run Code Online (Sandbox Code Playgroud)
然后我用spin来生成一个Rmd文件:spin('test.R')
但是,Rmd文件如下所示.
```{r }
for (i in 1:5) {
## This is a heading for `i`
#' This is a comment for `i`
print(i)
}
```
Run Code Online (Sandbox Code Playgroud)
R块中的markdown注释不会编译为HTML.可能吗?
谢谢,彼得
我的函数的参数的默认值包含"%".这似乎是roxygen的一个问题,它会产生很多警告,并且在尝试构建乳胶文档时R CMD检查失败.
如何使此功能(及其文档)有效?使用%%或\%代替%无济于事.
#' Test escape \% from in-source documentation (roxygen).
#'
#' What happens when parameters contain special latex characters?
#'
#' @param x unsuspicious parameter
#' @param format sprintf format string (default "\%5.0f")
#'
#' @return formatted string
#' @export
#' @author Karsten Weinert
testroxy <- function(x, format = "%5.0f") {
sprintf(format,x)
}
Run Code Online (Sandbox Code Playgroud) 我正在通过roxygen2包转换我的包以使用roxygen文档.现在我的包没有加载,我认为这是因为缺少来自NAMESPACE文件的useDynLib(mypackage)调用.我该如何生成这个?
一个简单的例子是我创建了一个扩展名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数学运算.
我想在R文件夹中使用目录结构来获取包的源代码.例如,在我的R文件夹中,我有一个algos文件夹,其中包含我要导出和记录的功能.但是roxygen2,默认情况下似乎没有通过该文件R夹的子文件夹.
我试图@include在`R/algos/algo1.r'的文件中使用如下关键字
#' @include algos/algo1.r
Run Code Online (Sandbox Code Playgroud)
但没有成功.是否有一种简单的方法可以将子文件夹用于R源代码?
我正在学习使用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中编写包时,可以以Rd格式创建帮助页面,然后将它们转换为HTML页面.如果帮助页面包含示例代码,则会在"示例"部分中打印.
例如,包"stats"的函数"prcomp"有两个页面:
问题是如何生成R代码执行的结果,特别是包括输出数字?这对应于"结果"部分.
我使用以下命令将Rd转换为HTML:
R CMD Rdconv -t html $rdfile > $rdname.html
Run Code Online (Sandbox Code Playgroud)
这称为R函数http://stat.ethz.ch/R-manual/R-devel/library/tools/html/Rd2HTML.html.
我将不胜感激任何意见或建议.谢谢.
R CMD roxygen在大包装上运行可能需要相当长的时间.它显然是低效的,无论自上次roxygen调用后文件是否发生变化,它都会经历所有事情.
关于如何加快速度的任何提示?
如何避免\dontrun{在包含示例的单独文件中\\dontrun{,在roxygenizing后在相应的Rd文件中?
我找到了一个解决方法,但感觉好像我可能只是错过了一些明显的东西,即一些设置roxigenize().
我想我注意到一个可能的错误,或者,恕我直言,至少在处理使用roxygen2的示例时存在于一个单独的文件中的不良行为(而不是在实际的roxygen代码中说明它).
问题是,\dontrun{各个示例文件\\dontrun{中的行在roxygenizing后变为生成的Rd文件.
您可以在下面找到行为的说明以及简单的解决方法
dir.create("src", recursive=TRUE, showWarnings=FALSE)
dir.create("package", recursive=TRUE, showWarnings=FALSE)
# Ensure empty package directory
subdirs <- list.files("package", full.names=TRUE)
if (length(subdirs)) {
sapply(subdirs, unlink, recursive=TRUE)
}
Run Code Online (Sandbox Code Playgroud)
foo1 <- function(x) {message("I'm foo #1"); return(TRUE)}
roxy.1 <- c(
"#' Title foo1()",
"#'",
"#' Description foo1().",
"##' This line is commented out",
"#'",
"#' @param x Some R object that …Run Code Online (Sandbox Code Playgroud)