我试图发布this package,但它在构建时仍然失败。
我在build
和check
中都有相应的变体:
Warning: /tmp/RtmpUUrH6N/Rbuild51f35b160bfe/taRifx.geo/man/interpolateAndApplyWithinSpatial.Rd:66: unexpected END_OF_INPUT '
我已将问题追溯到@examples
interpolateAndApplyWithinSpatial()
中的一行:
#' \dontrun{
#' require(fields)
#' require(rgdal)
#' distanceMatrix <- function( points1, points2, dist.fn=rdist.earth ) {
#' cat( "Generating distance matrix for ",length(points1)," by ", length(points2), " matrix.\n" )
#' if(!is.na(proj4string(points1))) points1 <- spTransform( points1, CRS("+proj=longlat +datum=WGS84") )
#' if(!is.na(proj4string(points2))) points2 <- spTransform( points2, CRS("+proj=longlat +datum=WGS84") )
#' ##PROBLEMATIC LINE HERE##
#' }
#' } # end of dontrun
##PROBLEMATIC LINE HERE##
最初是dist.fn( points1@coords, points2@coords )
,导致包构建错误消息。
如果我注释掉dist.fn( points1@coords, points2@coords )
,它仍会返回错误消息。如果我将代码复制并粘贴到控制台中,它就会运行。我试过手动重新打字,所以我确定那里没有有趣的角色,但它仍然失败。
生成的.Rd
文件似乎省略了@
之后的所有内容,只留下了一些}
短:
\examples{
# Not run because too time-consuming
\dontrun{
require(fields)
require(rgdal)
distanceMatrix <- function( points1, points2, dist.fn=rdist.earth ) {
cat( "Generating distance matrix for ",length(points1)," by ", length(points2), " matrix.\\n" )
if(!is.na(proj4string(points1))) points1 <- spTransform( points1, CRS("+proj=longlat +datum=WGS84") )
if(!is.na(proj4string(points2))) points2 <- spTransform( points2, CRS("+proj=longlat +datum=WGS84") )
dist.fn( points1
}
我最好的猜测是roxygen2
将@coords
解释为roxygen2
指令。是对的吗?如果是这样,我该如何解决?短期修复是为coords
插槽编写一个访问器函数并使用它,我猜。
答案 0 :(得分:3)
符号@
在Roxygen中具有特殊含义。因此,如果您需要在Roxygen示例代码中使用@
(或者在任何Roxygen字段中),则需要将其替换为@@
。
因此,Roxygen段:
#' @examples
#' dist.fn( points1@@coords, points2@@coords )
将转换为R手册页中的以下代码:
dist.fn( points1@coords, points2@coords )
请注意,在这种情况下,您可以将points1@coords
替换为coordinates(points1)
,如评论中所示。但是,这可能并不总是可行,这取决于是否存在索引S4类对象中的插槽的方法。