R CMD проверка ищет несуществующий файл - PullRequest
0 голосов
/ 10 января 2019

R Проверка CMD ищет несуществующий файл .R при подготовке пакета к отложенной загрузке, Rcpp.package.skeleton создает, казалось бы, поврежденный RcppExports.cpp файл.

Я пытаюсь собрать R-пакет, используя Rcpp, настроив его с помощью вызова Rcpp.package.skeleton. Это приводит к повреждению RcppExports.cpp файл (повторяющиеся определения функций).

После ручного исправления этого файла я запускаю devtools :: check (), компиляция и компоновка завершаются успешно, и dll собрана. Но тогда следующий вывод из R CMD проверят

   ** R
   ** data
   ** byte-compile and prepare package for lazy loading
   Reading DataUtils.R
   Reading Env.R
   Reading Paths.R
   Reading RcppExports.R
   Reading StatUtils.R
   Reading SynData.R
   Warnung in file(filename, "r", encoding = encoding)
       cannot open file 'src/Env.R': No such file or directory
   Error in file(filename, "r", encoding = encoding) : 
       cannot open file connection
   Error : unable to load R code in package 'ZA'
   ERROR: lazy loading failed for package 'ZA'
   * removing 'C:/Users/MeyerM/Projects/R/ZA/ZA.Rcheck/ZA'
   In R CMD INSTALL

Зачем искать файл "src / Env.R"?

Пакет можно получить от https://github.com/spyqqqdia/ZAp (файл ZAp.zip).

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 11 января 2019

В этом коде много ошибок:

  1. Дублировать // [[Rcpp::export]] до объявления и определения функции. Это приводит к ошибкам переопределения при компиляции RcppExports.cpp.
  2. Использование string вместо std::string или using std::string в некоторых файлах.
  3. Код, который не должен быть частью пакета, например compileCpp.R

    source("src/Env.R")
    library(Rcpp)
    

В первом приближении файлы в R должны содержать только определения функций.

0 голосов
/ 10 января 2019

Ваш репо / код неверен:

edd@rob:/tmp/so$ git clone git@github.com:spyqqqdia/ZAp.git
Cloning into 'ZAp'...
remote: Enumerating objects: 52, done.
remote: Counting objects: 100% (52/52), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 52 (delta 3), reused 52 (delta 3), pack-reused 0
Receiving objects: 100% (52/52), 31.78 KiB | 986.00 KiB/s, done.
Resolving deltas: 100% (3/3), done.
edd@rob:/tmp/so$ ls
ZAp
edd@rob:/tmp/so$ build.r ZAp                 # R CMD build wrapper
* checking for file ‘ZAp/DESCRIPTION’ ... OK
* preparing ‘ZAp’:
* 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
* building ‘ZAp_1.0.tar.gz’

edd@rob:/tmp/so$ rcc.r ZAp_1.0.tar.gz        # R CMD check wrapper
── R CMD check ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─  using log directory ‘/tmp/file3d684dd243a4/ZAp.Rcheck’
─  using R version 3.5.2 (2018-12-20)
─  using platform: x86_64-pc-linux-gnu (64-bit)
─  using session charset: UTF-8
✔  checking for file ‘ZAp/DESCRIPTION’ ...
─  checking extension type ... Package
─  this is package ‘ZAp’ version ‘1.0’
✔  checking package namespace information
✔  checking package dependencies (519ms)
W  checking if this is a source package
   Subdirectory ‘src’ contains:
     PathGenerator.hpp matrix.hpp paths.hpp swap.hpp swapprogram.hpp
     utils.hpp
   These are unlikely file names for src files.
✔  checking if there is a namespace
✔  checking for executable files ...
✔  checking for hidden files and directories
✔  checking for portable file names
✔  checking for sufficient/correct file permissions
E  checking whether package ‘ZAp’ can be installed (5.1s)

   See
     ‘/tmp/file3d684dd243a4/ZAp.Rcheck/00check.log’
   for details.

   Installation failed.
   See ‘/tmp/file3d684dd243a4/ZAp.Rcheck/00install.out’ for details.
edd@rob:/tmp/so$

Обертки от маленького и не имеют значения. Ваш код плох - он не строит. Обратите внимание на предупреждения и заметки. Все они.

Компилятор сообщает мне о переопределениях базиллионов. У вас, похоже, есть проблемы здесь. Для начала попробуй что-нибудь попроще, заставь это работать, соберись оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...