r - 编译 Rpackage : error in asNamespace(ns) using Rcpp 的问题

标签 r rcpp r-package

处理一个小的 Rcpp 包以使用 Boost以及它在 C 中的一些几何函数。

完成了函数的编写,一切运行良好。在推送到 GitHub 之前,最后一次测试一切正常(Clean and Rebuild 并测试功能)。一旦我仔细检查了该目录是否全部干净地存储在 GitHub 中,我就从本地计算机中删除了该目录。还应该注意的是,我在此运行 Roxygen2 并管理 NAMESPACE文件。

将目录克隆回来后 Clean and Rebuild我收到以下错误:

==> Rcpp::compileAttributes()

* Updated R/RcppExports.R

==> R CMD INSTALL --preclean --no-multiarch --with-keep.source MinimumRcpp

* installing to library ‘/Library/Frameworks/R.framework/Versions/3.5/Resources/library’
* installing *source* package ‘MinimumRcpp’ ...
clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I"/Library/Frameworks/R.framework/Versions/3.5/Resources/library/Rcpp/include" -I/usr/local/include   -fPIC  -Wall -g -O2 -c RcppExports.cpp -o RcppExports.o
** libs
clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I"/Library/Frameworks/R.framework/Versions/3.5/Resources/library/Rcpp/include" -I/usr/local/include   -fPIC  -Wall -g -O2 -c findParetoSet.cpp -o findParetoSet.o
clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I"/Library/Frameworks/R.framework/Versions/3.5/Resources/library/Rcpp/include" -I/usr/local/include   -fPIC  -Wall -g -O2 -c kintersection.cpp -o kintersection.o
clang++ -std=gnu++11 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o MinimumRcpp.so RcppExports.o findParetoSet.o kintersection.o -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
installing to /Library/Frameworks/R.framework/Versions/3.5/Resources/library/MinimumRcpp/libs
** R
** byte-compile and prepare package for lazy loading
Error in asNamespace(ns) : not a namespace
Error : unable to load R code in package ‘MinimumRcpp’
ERROR: lazy loading failed for package ‘MinimumRcpp’
* removing ‘/Library/Frameworks/R.framework/Versions/3.5/Resources/library/MinimumRcpp’

Exited with status 1.

当然,代码中没有任何变化。但是,我确实有以下 .gitignore文件:
# /.gitignore
inst/lib
.Rproj.user     ## Could this be an issue? 
.Rproj.user/    ## Could this be an issue? 
.Rproj.user/**  ## Could this be an issue? 
src/*.o
src/*.so
src/*.dll
src/symbols.rds
.Rhistory
.RData
.DS_Store

## QtCreator
Rcpp.pro
Rcpp.pro.user
*.autosave
.#*

*.tar.gz

vignettes/*_cache

## GNU global
GPATH
GRTAGS
GTAGS

##
local/

## docker helpers
docker/*sh
docker/*/*.sh
# /.Rbuildignore
debian
inst/doc/html
inst/doc/latex
inst/doc/man
inst/doc/jss.bst
vignettes/jss.bst
^.*\.Rproj$
^\.Rproj\.user$
vignettes/notyet
doxyfile
\.travis\.yml
\.dir-locals\.el
\.clang_format
vignettes/getCurrentVersionsOfCitedPackages.R
^Contributing.md$
^\.codecov\.yml$
inst/include/Rcpp.h.new
inst/include/Rcpp.h.old
LICENSE
.*\.tar\.gz$
\.editorconfig
docker
^GPATH
^GRTAGS
^GTAGS
^local
vignettes/Makefile
vignettes/rmd
\.github

是否有可能是一些构建包所需的包数据​​被遗留下来并导致了当前的问题?

任何援助将不胜感激。此外,关于如何调试的任何建议都会有所帮助,因为当前的输出消息非常模糊,让我没有方向。

这是用于重现性的 GitHub 存储库:https://github.com/eduardoRubioG/MinimumRcpp

最佳答案

菜鸟错误,但一个严重的错误:

  • 永远不要在您的 R/ 中保留脚本文件目录
  • 目录中的所有内容(我们的意思是所有内容)都获得了源代码(前提是它看起来像 R 代码,_即以 .R 结尾)
  • 你留下了一个带有 library(MinimumRcpp) 的脚本在那里调用,所以现在你的包字节码编译想要源自己 --> 不是一个好计划
  • 简而言之,保留这些脚本,但将它们放在例如local/并排除 local/通过 .Rbuildignore .

  • 加上重要的风格课
  • 不要离开rm(list = ls(all = TRUE))在您的代码中

  • 所以如果你这样做 mv R/script.R R/script.R.txt并重建,一切都很好。

    (我收到了六个警告,因为 n 不是 size_t,而是与一个相比。你可能想更早地转换它。)

    关于r - 编译 Rpackage : error in asNamespace(ns) using Rcpp 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61468265/

    相关文章:

    r - 将匿名函数与 summary_each 或 mutate_each 一起使用

    rcpp 函数不在 r 包中导出

    r - 矩阵索引中的负下标

    r 使用 Ornstein-Uhlenbeck 估计均值回归时间的代码

    r - 改变一个数据集的分布以匹配另一个数据集

    r - 'closure' 类型的错误对象不是子集

    r - 如何在不知道 Rcpp 类型的情况下处理向量

    R 套餐纯素 Decorana

    r - 检查 CRAN 传入的可行性...注意维护者

    r - 构建包时,小插图是否构建在新的 R session 中?