gpt4 book ai didi

r - 使用 sourceCpp() 的 Rcpp 和 RcppArmadillo 在 R 中出错

转载 作者:行者123 更新时间:2023-12-05 01:07:59 24 4
gpt4 key购买 nike

我是 C++ 的新手,但花了很多时间使用 R。我正在尝试使用 RcppArmadillo,其中 .cpp 文件是使用 sourceCpp 函数获取的。我的示例代码来自

http://lists.r-forge.r-project.org/pipermail/rcpp-devel/2013-June/006150.html

并显示如下:

#include <RcppArmadillo.h>
using namespace Rcpp ;
// [[Rcpp::depends(RcppArmadillo)]]

// [[Rcpp::export]]
arma::colvec rowSumsRcppArmadillo(NumericMatrix x){
arma::mat X = arma::mat(x.begin(), x.nrow(), x.ncol(), false);
return arma::sum(X, 1);
}

我安装了 Rcpp 和 RcppArmadillo 包,并成功地使用 Rcpp(没有 RcppArmadillo)集成了 C++ 函数。但是,对于 RcppArmadillo,我收到以下错误:

> sourceCpp("rowSums.cpp")
ld: warning: directory not found for option '-L/usr/local/lib/gcc/i686-apple- darwin8/4.2.3/x86_64'
ld: warning: directory not found for option '-L/usr/local/lib/x86_64'
ld: warning: directory not found for option '-L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3'
ld: library not found for -lgfortran
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [sourceCpp_76327.so] Error 1

...

Error in sourceCpp("rowSums.cpp") :
Error 1 occurred building shared library.

有什么想法吗?谢谢。

最佳答案

查看错误:ld: library not found for -lgfortran

您需要安装 Fortran 库,因为 RcppArmadillo 在 src/Makevars 中有这个:

PKG_LIBS=`$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"` \
$(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)

您可以通过 R 获得 Lapack 和 Blas,但需要 Fortran 库。有关从哪里获得它的信息,请参阅 R 的 OS X 文档;我相信这个地方是Simon's page at AT&T但我自己不是 OS X 用户。如果有疑问,请在 r-sig-mac 上询问,那里还有许多关于升级到 OS X 10.9 时发生的各种损坏的讨论线程。

关于r - 使用 sourceCpp() 的 Rcpp 和 RcppArmadillo 在 R 中出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19758987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com