R CMD构建 .失败:"argument is of length zero"



我的包上的R CMD build .失败,输出如下:

* checking for file ‘./DESCRIPTION’ ... OK
* preparing ‘myPackage’:
* checking DESCRIPTION meta-information ... OK
* cleaning src
* checking for LF line-endings in source and make files and shell scripts
* checking for empty or unneeded directories
Error in if (dep$op != ">=") next : argument is of length zero
Execution halted

RStudio也给出了无益的输出:

错误:生成目录不包含描述因此无法将文件构建为包。

生成目录:~/myPackage

(DESCRIPTION文件明显存在(

这是我的DESCRIPTION文件:

Package: myPackage
Version: 0.1.0
Title: This is my package
Author: Michael Chirico
Maintainer: Michael Chirico <my_email@gmail.com>
Depends: R
Description: My package is great!
Imports: Rcpp (>= 1.0.0)
LinkingTo: Rcpp

我的包结构出了什么问题?

更新2020-04-27

在当前的svn修订版(78311(中,这个问题已经过时了——如果没有给定>=,那么内部函数tools:::.split_description现在只是放弃了R依赖关系。

这是这个错误报告的结果:

https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17768


与R 4.0.0及更早版本相关

Depends: R必须具有R版本依赖项:

Depends: R (>= 3.0.0)

(或任何合适的(

这在编写R扩展:中有说明

在没有版本规范的情况下声明对R的依赖是没有意义的,也没有对包base的依赖:这是一个R包,包base总是可用的。

因此,我也可以删除这一行(如果我的包没有其他依赖项(。

这样,构建就立即完成。

虽然回想起来这一点很清楚,但也许找出问题所在的途径也可以说明问题(因为这个特定的错误消息没有给我任何搜索结果(:

if(dep$op!=">="(next中的错误:参数的长度为零

作为R代码,看起来很熟悉——很明显,dep$op(无论是什么(由于某种原因丢失/未声明。尚不清楚的是正在执行的代码/产生此错误的函数。

但是,无论它是什么代码,都必须在R源内部,所以我们可以:

  1. 试试GitHub在存储库中搜索消息的运气(由于网络搜索中通常会出现各种分隔符/其他字符,可能很难匹配(
  2. 克隆repo并在源代码中使用grep(等((更灵活,但如果您还没有完整的R源代码,则需要下载(

今天,我很幸运地在GitHub上获得了"if (dep$op != ">=") next"的两个文件;src/library/tools/R/build.R看起来像是在鼻子上。

以下是找到该片段的区域:

ixup_R_dep <- function(pkgname, ver = "2.10")
{
desc <- .read_description(file.path(pkgname, "DESCRIPTION"))
Rdeps <- .split_description(desc)$Rdepends2
for(dep in Rdeps) {
if(dep$op != '>=') next
if(dep$version >= package_version(ver)) return()
}

这在tools包中,因此辅助功能可用,例如tools:::.read_description

这样,很容易看出Rdeps正在捕获DESCRIPTIONDepends: R部分,并且它也希望找到版本标记;CCD_ 19是应用于CCD_ 21结束的CCD_。

相关内容

最新更新