roxygen2 + cygwin +默认参数=截断的`\ usage`部分

mat*_*fee 6 cygwin r roxygen roxygen2

我有一个R的软件包我一直在Linux下开发,而且我在Windows下测试它的时候已经到了.

文档是使用roxygen完成的,我正在使用cygwin来构建软件包.

问题是,当我roxygenise('test-package'),roxygen \usage将文档的部分截断为一个字符.它对一些但不是我的所有功能都这样做,我无法弄清楚这种模式.

roxygenise('test-package')在Linux或Windows下运行相同的命令(即从R提示符)时不会发生这种情况- 只是在Windows下的Cygwin(使用R devtools +来自Windows的命令提示符对我来说不是一个选项 - 它是Makefile的一个大项目的一部分等等).

在所有情况下,我使用roxygen v2.2.2.


更新:

对于具有默认参数的任何函数,都会出现这种情况.


我把它归结为一个可重复的例子,尽可能地减少以解决问题:

  1. 来自R:

    # this function used to trim strings, but I've stripped it right down
    # to eliminate it as a cause of the problem
    trim <- function(x='asdf')
    {
        return( x )
    }
    package.skeleton('test')
    
    Run Code Online (Sandbox Code Playgroud)
  2. 修改trim.R(在test/R中)并将以下roxygen添加到顶部,因此文件如下所示:

    #' trim white spaces from a string
    #'
    #' @param x string or vector of strings to trim
    #' @return x trimmed.
    #' @export
    trim <-
    function(x='asdf')
    {
        return( x )
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 运行R并生成文档:

    library(roxygen2)
    roxygenise('test')
    
    Run Code Online (Sandbox Code Playgroud)
  4. 查看生成的trim.Rd文件(在test/man中):

    \name{trim}
    \alias{trim}
    \title{trim white spaces from a string}
    \usage{
      t
    }
    \arguments{
      ... # rest of .Rd file - nothing wrong here.
    
    Run Code Online (Sandbox Code Playgroud)

看看怎么样\usage{t}

当然,当一个人运行时R CMD check会得到一个错误,关于记录的参数没有出现在\usage,但那是因为\usage被截断了.

有谁知道为什么会发生这种情况以及如何解决这个问题?也许某些东西roxygen2依赖于适用于Mac,Windows和Linux但不适用于Cygwin的东西?

欢呼(我一直在撕扯我的头发).

更新#2:

我一直在使用从Cygwin的软件包管理器安装的R,而不是我的Windows R(即其中的一个C:/Program Files/R/R-2.14.2/bin) - 我没有意识到Windows R可以在Cygwin下工作.

如果我在Cygwin中使用Windows R,则该bug就会消失.如果我在Cygwin中使用Cygwin R,则会出现错误.

我只能假设这是与Cygwin R相关的一些错误,而不是roxygen2.

现在我将使用在cygwin中使用Windows R的解决方法(事实上,现在我知道我可以做到这一点,无论如何都不需要Cygwin R!).

mat*_*fee 0

这不是修复,而是解决方法。

我一直在使用从 Cygwin 的包管理器安装的 R,而不是我的 Windows R(即 C:/Program Files/R/R-2.14.2/bin 中的那个) - 我没有意识到 Windows R 可以在西格温。

如果我在 Cygwin 中使用 Windows R,该错误就会消失。如果我在 Cygwin 中使用 Cygwin R,则存在该错误。

我只能假设这是与 Cygwin R 相关的错误,而不是 roxygen2。

现在,我将使用在 cygwin 中使用 Windows R 的解决方法(事实上,现在我知道我可以做到这一点,无论如何都不需要 Cygwin R)。这仍然使我可以访问makesed和 等Linux 命令grep,但允许我使文档正常工作。

问题仍然是 Cygwin 中的 Cygwin-R(不是 Cygwin 中的 Windows-R)导致此错误,但也许它不再与 roxygen2 相关。