6

我有一个我一直在 Linux 下开发的 R 包,我在 Windows 下测试它的可怕时刻已经到来。

文档是使用 roxygen 完成的,我正在使用 cygwin 构建包。

问题是,当 I 时roxygenise('test-package'),roxygen 将\usage文档的部分截断为一个字符。它对我的一些但不是全部功能执行此操作,我无法弄清楚模式。

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

在所有情况下,我都使用 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.
    

看看怎么只有一个\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,错误就会消失。如果我在 Cygwin 中使用 Cygwin R,则存在该错误。

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

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

4

1 回答 1

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)。这仍然使我可以访问 和 之类的 linux 命令,make但可以让我使文档正常工作。sedgrep

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

于 2012-03-08T06:40:05.597 回答