小编inm*_*ain的帖子

由RcppArmadillo.package.skeleton创建的NAMESPACE选项会导致错误

我正在创建一个包含Rcpp函数的R包,这取决于RcppArmadillo,所以我首先生成包骨架RcppArmadillo.package.skeleton.但是,当roxygenize我的包裹,它给我一个错误如下所示.

R代码

library(roxygen2)
library(RcppArmadillo)
library(Rcpp)
RcppArmadillo.package.skeleton(name = "prac_181206", example_code = FALSE)
roxygenize(package.dir =  "prac_181206", roclets = "rd")
Run Code Online (Sandbox Code Playgroud)

错误

Error in getDLLRegisteredRoutines.DLLInfo(dll, addNames = FALSE) : 
  must specify DLL via a “DLLInfo” object. See getLoadedDLLs()
Run Code Online (Sandbox Code Playgroud)

花了一些时间后,我想通过删除文件中的.registration选项可以解决这个问题,NAMESPACE如下所示.

原始NAMESPACE文件

useDynLib(prac_181206, .registration=TRUE)
importFrom(Rcpp, evalCpp)
exportPattern("^[[:alpha:]]+")
Run Code Online (Sandbox Code Playgroud)

简而言之,在更改上面的第一行后useDynLib(prac_181206),它工作正常,但我不明白错误的含义以及我的解决方案的工作原理.

你能帮我解决这个问题吗?我很感激!

因为这是一个玩具示例,希望可以重现,我没有包含上面创建的任何其他功能mansrc文件夹RcppArmadillo.package.skeleton.

仅供参考,有关我平台的相关信息是

  • Windows 7 x64
  • R-3.5.1,Rstudio-1.1.423
  • Rcpp-0.12.19,RcppArmadillo-0.9.100.5.0
  • roxygen2-6.1.1

r armadillo rcpp roxygen2 r-package

8
推荐指数
1
解决办法
315
查看次数

我可以在不安装 Rtools 的情况下在 R 中使用 Rcpp 代码吗?

我实验室中的 Window HPC 服务器没有 Rtools,所以我在获取 Rcpp 代码时收到了这条消息。

Warning message:
running command 'make -f "C:/PROGRA~1/R/R-32~1.2/etc/x64/Makeconf" -f "C:/PROGRA~1/R/R-32~1.2/share/make/winshlib.mk" SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="sourceCpp_1.dll" WIN=64 TCLBIN=64 OBJECTS="MultiBayes.v1.o"' had status 127 
Error in sourceCpp("./rcode/MultiBayes.v1.cpp") : 
  Error 1 occurred building shared library.

WARNING: The tools required to build C++ code for R were not found.

Please download and install the appropriate version of Rtools:

http://cran.r-project.org/bin/windows/Rtools/

Execution halted
Run Code Online (Sandbox Code Playgroud)

由于管理人员说在服务器中安装Rtools可能需要很长时间,我想知道是否有另一种方法可以避免此问题并在不安装Rtools的情况下运行Rcpp代码。

据我所知,构建一个包不会有帮助,因为它在安装时也使用了 Rtools。如有错误请指正。

我可以绕过这个来运行代码吗?

感谢您的任何意见和想法。

r rcpp rtools

3
推荐指数
1
解决办法
464
查看次数

(Rcpp, armadillo) 将 arma::vec 转换为 arma::mat

我有一个矩阵 X,它是由arma::vectorise函数矢量化的。在对转换后的向量 x 进行一些计算之后,我想将其重塑为arma::mat. 我试图.reshape在犰狳中使用函数,但它给了我这个错误。

注册码

// [[Rcpp::export]]
arma::mat vec2mat(arma::vec x, int nrow, int ncol){
  return x.reshape(nrow, ncol);
}
Run Code Online (Sandbox Code Playgroud)

错误信息

no viable conversion from returned value of type 'void' to function return type 'arma::mat' (aka 'Mat<doubld>')
Run Code Online (Sandbox Code Playgroud)

有人能帮我找到处理这个问题的好方法吗?在这种情况下,我不确定应该为函数返回类型使用什么类型。如果您知道将向量转换为矩阵的另一种方法,那么它也很棒:)

提前致谢!

r type-conversion rcpp

1
推荐指数
1
解决办法
3309
查看次数

标签 统计

r ×3

rcpp ×3

armadillo ×1

r-package ×1

roxygen2 ×1

rtools ×1

type-conversion ×1