roxygen2+;cygwin+;默认参数=截断的“\usage”节

roxygen2+;cygwin+;默认参数=截断的“\usage”节,r,cygwin,roxygen,roxygen2,R,Cygwin,Roxygen,Roxygen2,我有一个在Linux下开发的R软件包,可怕的时候到了,我要在Windows下测试它 文档是使用roxygen完成的,我使用cygwin构建包 问题是,当我roxygenise('test-package')时,roxygen将文档的\usage部分截断为一个字符。它对我的一些但不是所有的函数都这样做,我无法理解模式 在Linux或Windows下运行相同的命令(即从R提示符下运行roxygenise('test-package'))时不会发生这种情况-只是在Windows下运行Cygwin(从W

我有一个在Linux下开发的R软件包,可怕的时候到了,我要在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')
    
  • 运行R并生成文档:

    library(roxygen2)
    roxygenise('test')
    
  • 查看生成的
    trim.Rd
    文件(在test/man中):

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

    我只能假设这是一些与Cygwin R有关的bug,而不是roxygen2


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

    这不是一个修复方案,而是一个解决方案

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

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

    我只能假设这是一些与Cygwin R有关的bug,而不是roxygen2

    现在,我将在cygwin中使用Windows R的解决方法(事实上,现在我知道我可以做到这一点,无论如何,cygwin R都没有必要)。这仍然允许我访问linux命令,如
    make
    sed
    grep
    ,但允许我使用文档


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

    我从未在
    roxygen2
    中见过这种行为,但我也没有使用
    roxygenise
    。相反,我在包
    devtools
    中使用
    document()。无论如何,我的设置似乎和你的一样:Windows7+CygWin+RoxyGen2V2.2.2。我很同情你,但遗憾的是我不能提供建议。我快速浏览了roxygen2的源代码,但我看不到任何明显的原因(如
    系统
    调用)-可能是编码??!!我将尝试
    devtools
    ,看看是否会遇到同样的问题。在我意识到只有在Cygwin中我才有这个问题之前,我确实花了很长时间思考我在标记中犯了一个错误。啊哈!我和Bill Venables(!)聊过,他告诉我你可以在cygwin中运行你的Windows R(即
    程序文件/R/R-2.14.2/bin
    )。我一直在用你从cygwin的软件包经理那里得到的R。瞧,使用Windows R是可行的。因此,这可能是cygwin的包管理器与roxygen2相反的R中的一个bug。请您将您的结果写下来作为答案(而不是编辑问题)。这样我们就可以把问题标记为已回答。我真的不认为这个问题被回答,但是错误仍然存在——这只是一个解决办法。
    library(roxygen2)
    roxygenise('test')
    
    \name{trim}
    \alias{trim}
    \title{trim white spaces from a string}
    \usage{
      t
    }
    \arguments{
      ... # rest of .Rd file - nothing wrong here.