从不正确的.Rbuildignore文件构建后,包中缺少Collat​​e字段中的文件

Eri*_*lts 2 r build package

我的包中的一个函数在构建时拒绝添加到包源,然后在运行R CMD检查时失败.

我的包位于github 这里.文件compute_latitude_and_longitude.R当然存在于R目录中:

$ ls R  
calculate_latitude_and_longitude.R clean_coordinates_XBLOCK.R  clean_crime_data.R
load_crime_data_by_ward.R clean_coordinates.R
clean_coordinates_YBLOCK.R dccrimedata-package.R
Run Code Online (Sandbox Code Playgroud)

我能够构建包,但由于某种原因,构建不包括文件calculate_latitude_and_longitude.R.我可以通过浏览tar球中的R目录来验证它是否跳过此文件.

安装或运行后,R CMD check dccrimedata_0.1.tar.gz我在00install.log文件中收到以下错误:

Error in .install_package_code_files(".", instdir) :
files in 'Collate' field missing from '/Users/erikshilts/workspace/dc_crime_data/dccrimedata.Rcheck/00_pkg_src/dccrimedata/R':
  calculate_latitude_and_longitude.R
ERROR: unable to collate and parse R files for package ‘dccrimedata’
Run Code Online (Sandbox Code Playgroud)

我已经尝试重命名该函数,创建一个新文件,注释掉行,删除roxygen标签等,但没有一个有助于将该函数放入包中.

知道出了什么问题吗?

该函数的完整代码如下:

#' Calculate Latitude and Longitude
#'
#' Calculates latitude and longitude from XBLOCK AND YBLOCK coordinates.
#' The coordinates are given in the NAD 83 projection, Maryland state plane,
#' with units in meters. Documentation for this calculation can be found in the
#' README file.
#'
#' @param crime_data data.frame of crime records
#' @return data.frame with two additional columns, latitude and longitude, with units in the standard GPS format
#' @export
calculate_latitude_and_longitude <- function(crime_data) {
  xy_coords <- crime_data[, c('XBLOCK', 'YBLOCK')]

  coordinates(xy_coords) <- c('XBLOCK', 'YBLOCK')

  # NAD83, maryland state plane, units in meters
  proj4string(xy_coords) <- CRS("+init=esri:102285")
  # Transform to latitude and longitude for GPS
  xy_coords <- spTransform(xy_coords, CRS("+init=epsg:4326"))

  xy_coords <- as.data.frame(xy_coords)
  names(xy_coords) <- c('longitude', 'latitude')

  crime_data <- cbind(crime_data, xy_coords)

  crime_data
}
Run Code Online (Sandbox Code Playgroud)

我的DESCRIPTION文件如下所示:

Package: dccrimedata
Title: An R package containing DC crime data.
Description: Crime data from DC from 2006 to mid-2012
Version: 0.1
License: GPL-3
Author: erik.shilts
Maintainer: <erik.shilts@opower.com>
Depends:
    rgdal,sp
Collate:
    'calculate_latitude_and_longitude.R'
    'clean_coordinates_XBLOCK.R'
    'clean_coordinates_YBLOCK.R'
    'clean_coordinates.R'
    'clean_crime_data.R'
    'load_crime_data_by_ward.R'
    'dccrimedata-package.R'
Run Code Online (Sandbox Code Playgroud)

更新:

我将更改隔离到名称中带有"经度"的任何文件("纬度"工作正常).此repo中的.Rbuildignore文件如下所示:

.git
.Rhistory
.Rcheck
\.tar\.gz$
out
Run Code Online (Sandbox Code Playgroud)

你会注意到我没有逃避这段时间.git,导致它忽略任何带有"Xgit"的文件(X是任何字符),因此导致它忽略我的文件"calculate_latitude_and_lon*git*ude.R"

Eri*_*lts 8

.Rbuildignore文件错误地转义了句点.git.这是.Rbuildignore文件:

.git
.Rhistory
.Rcheck
\.tar\.gz$
out
Run Code Online (Sandbox Code Playgroud)

错误转义的句号.git导致它忽略以"经度"一词命名的文件,因为单词中间的"git".

.Rbuildignore文件应如下所示:

\.git
\.Rhistory
\.Rcheck
\.tar\.gz$
out
Run Code Online (Sandbox Code Playgroud)

正则表达式的乐趣!

  • 这是一个很棒的收获! (3认同)