我有一个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。
对于具有默认参数的任何函数,都会出现这种情况。
我把它归结为一个可重复的例子,尽可能地减少以解决问题:
来自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
文件(在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和Windows的内容。 Linux而不是Cygwin?
我一直在使用从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。)。
答案 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)。这仍然允许我访问make
,sed
和grep
等linux命令,但允许我使文档正常工作。
问题仍然存在,Cygwin中的Cygwin-R(不是Cygwin中的Windows-R)导致了这个错误,但也许它与roxygen2无关。