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

标签 r cygwin roxygen roxygen2

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

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

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

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

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

更新:

对于具有默认参数的任何函数,这似乎都会发生。

我将其归结为一个可重现的示例,并尽可能减少以隔离问题:

  • 来自 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')
    
  • 修改 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 )
    }
    
  • 运行 R 并生成文档:
    library(roxygen2)
    roxygenise('test')
    
  • 看看结果 trim.Rd文件(在测试/人):
    \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!)。

    最佳答案

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

    我一直在使用从 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)。这仍然让我可以访问像 make 这样的 linux 命令。 , sedgrep ,但允许我让文档工作。

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

    关于roxygen2 + cygwin + 默认参数 = 截断的 `\usage` 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9595865/

    相关文章:

    c - 从命令行使用 Visual Studio 2013 编译 aritchk.c 时出现未解析的符号

    r - 自动记录数据集

    python - Unix : Getting Mouse -coordinates over X like the Mathematica?

    r - promise 已在评估中 : recursive default argument reference or earlier problems?

    linux - 我如何停止光标在 linux 控制台中闪烁(例如 cygwin)?

    roxygen2 不生成 .Rd 文件

    Roxygen 无法打开文件/权限被拒绝/执行停止

    r - 将匹配 NA 的 df 的字符行与所有内容进行比较,并根据比较创建新列或 df

    删除 "NUL"个字符(在 R 中)

    c - DISLIN 不适用于代码块