我有一个 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。
更新:
对于具有默认参数的任何函数,这似乎都会发生。
我将其归结为一个可重现的示例,并尽可能减少以隔离问题:
# 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 )
}
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 命令。 , sed
和 grep
,但允许我让文档工作。
问题仍然是 Cygwin 中的 Cygwin-R(而不是 Cygwin 中的 Windows-R)导致此错误,但也许它不再与 roxygen2 相关。
关于roxygen2 + cygwin + 默认参数 = 截断的 `\usage` 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9595865/