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

时间:2012-03-07 04:32:02

标签: r cygwin roxygen roxygen2

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

使用roxygen完成文档,我使用cygwin构建软件包。

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

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

在所有情况下,我使用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')
    
  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 )
    }
    
  3. 运行R并生成文档:

    library(roxygen2)
    roxygenise('test')
    
  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.
    
  5. 看看它是如何只有一个\usage{t} ??

    当然,当一个人运行R CMD check时,会收到有关未在\usage中显示的文档参数的错误,但这是因为\usage被截断了。

    有谁知道为什么会发生这种情况以及如何解决这个问题?也许roxygen2中的某些内容依赖于适用于Mac,Windows和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。)。

1 个答案:

答案 0 :(得分:0)

这是修复,但是是一种解决方法。

我一直在使用从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)。这仍然允许我访问makesedgrep等linux命令,但允许我使文档正常工作。

问题仍然存在,Cygwin中的Cygwin-R(不是Cygwin中的Windows-R)导致了这个错误,但也许它与roxygen2无关。