使用roxygen2处理示例文件:反斜杠重复(\dontrun变为\\dontrun) 实际问题

使用roxygen2处理示例文件:反斜杠重复(\dontrun变为\\dontrun) 实际问题,r,roxygen,roxygen2,R,Roxygen,Roxygen2,如何避免包含示例的\dontrun{单独文件中的\dontrun{在氧化后成为相应Rd文件中的\\dontrun{ 我确实找到了一个解决办法,但感觉好像我只是缺少了一些明显的东西,即roxigenize()的一些设置 细节 我想我在处理存储在单独文件中的示例时注意到了一个可能的bug,或者,IMHO,至少是一个不希望出现的行为(而不是在实际的roxygen代码中说明) 问题是,在经过氧化处理后,相应示例文件中的行\dontrun{在生成的Rd文件中变为\\dontrun{ 在下面,您将看到该行为

如何避免包含示例的
\dontrun{
单独文件中的
\dontrun{
在氧化后成为相应Rd文件中的
\\dontrun{

我确实找到了一个解决办法,但感觉好像我只是缺少了一些明显的东西,即
roxigenize()
的一些设置

细节 我想我在处理存储在单独文件中的示例时注意到了一个可能的bug,或者,IMHO,至少是一个不希望出现的行为(而不是在实际的roxygen代码中说明)

问题是,在经过氧化处理后,相应示例文件中的行
\dontrun{
在生成的Rd文件中变为
\\dontrun{

在下面,您将看到该行为的说明以及一个简单的解决方法

1) 确保目录 4) 为
foo1()创建单独的示例文件
5) 氧化
6) 检查包裹
R CMD check的截断输出,显示
/package/test/man/foo1.Rd中的
\dontrun{
存在问题

[...]
Warning: parse error in file 'test-Ex.R':
1: unexpected input
19: 
20: \
    ^
* checking examples ... ERROR
Running examples in 'test-Ex.R' failed
The error most likely occurred in:

> ### Name: foo1
> ### Title: Title foo1()
> ### Aliases: foo1
> 
> ### ** Examples
> 
> \dontrun{
Error: unexpected input in "\"
Execution halted
Warning message:
In shell(expr, intern = FALSE) :
  'R CMD check package/test' execution failed with error code 1
> 
7) 变通办法 8) 再次检查包裹

# CHECK PACKAGE AGAIN
path <- "package/test"
expr <- paste("R CMD check", path)
shell(expr, intern=FALSE)
在该分支中实现了一个(更简单的):


有关更改,请参阅。这是一个单行修复。我还向peter发送了一个pull请求,希望它能在主包中得到采用。

这是一个在roxygen2的最新版本中修复的错误。

如果没有找到答案,您应该将其作为问题提交给开发人员().不久前,我遇到了roxygen2忽略示例中缩进的问题,他们在下面的版本中解决了这个问题。太好了,谢谢你的提示。我已经通过电子邮件将这篇文章的链接发送给Hadley,但提交一个标准化的问题可能确实是更好的方法。给你测试了吗?.编辑:这是一个很老的问题,错误可能是bly已经修复…foo2中有一个语法错误。R:示例部分中有两个大括号。@GSee:谢谢,我将查看+1。既然它只是一行修复,为什么不复制并粘贴到这里,以便其他人不必查看提交?roxygen2中“新行”的符号是什么?
package.skeleton(name="test", path="package", 
    code_files=c("src/foo1.R", "src/foo2.R"))
dir.create("package/test/inst/examples", recursive=TRUE, showWarnings=FALSE)
write(ex.1, file="package/test/inst/examples/foo1.R")
require("roxygen2")
roxygenize(
    package.dir="package/test",
    overwrite=TRUE, 
    unlink.target=FALSE,
    roclets = c("collate", "namespace", "rd")
)
shell("R CMD check package/test", intern=FALSE)
[...]
Warning: parse error in file 'test-Ex.R':
1: unexpected input
19: 
20: \
    ^
* checking examples ... ERROR
Running examples in 'test-Ex.R' failed
The error most likely occurred in:

> ### Name: foo1
> ### Title: Title foo1()
> ### Aliases: foo1
> 
> ### ** Examples
> 
> \dontrun{
Error: unexpected input in "\"
Execution halted
Warning message:
In shell(expr, intern = FALSE) :
  'R CMD check package/test' execution failed with error code 1
> 
patchRdFiles <- function( 
    path="package",
    name,
    ...
) {
    path <- file.path(path, name, "man")
    if (!file.exists(path)) {
        stop(paste("Invalid directory path: '", path, "'", sep=""))
    }
    files <- list.files(path, full.names=TRUE)  
#ii=files[1]    
    .dead <- sapply(files, function(ii) {
        cnt <- readLines(ii, warn=FALSE)
        if (length(grep("\\\\\\\\dontrun", cnt, perl=TRUE))) {
            message(paste("Correcting: '", ii, "'", sep=""))
            write(gsub("\\\\dontrun", "\\dontrun", cnt), file=ii)
        }
        return(NULL)
    })
    return(TRUE)
}
patchRdFiles(name="test")
# CHECK PACKAGE AGAIN
path <- "package/test"
expr <- paste("R CMD check", path)
shell(expr, intern=FALSE)
[...]
Warning: parse error in file 'test-Ex.R':
11: unexpected symbol
56: 
57: ~~ simple examples
              ^
* checking examples ... ERROR
Running examples in 'test-Ex.R' failed
The error most likely occurred in:

> ### Name: test-package
> ### Title: What the package does (short line) ~~ package title ~~
> ### Aliases: test-package test
> ### Keywords: package
> 
> ### ** Examples
> 
> ~~ simple examples of the most important functions ~~
Error: unexpected symbol in "~~ simple examples"
Execution halted
Warning message:
In shell(expr, intern = FALSE) :
  'R CMD check package/test' execution failed with error code 1
>