roxygen2+;cygwin+;默认参数=截断的“\usage”节
我有一个在Linux下开发的R软件包,可怕的时候到了,我要在Windows下测试它 文档是使用roxygen完成的,我使用cygwin构建包 问题是,当我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
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')
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.