使用Rstudio在windows中设置Rcpp Armadillo
我正在尝试使用Rstudio在我的windows系统中设置RcppArmadillo。我已经用命令成功地安装了RcppArmadillo使用Rstudio在windows中设置Rcpp Armadillo,windows,r,rcpp,armadillo,Windows,R,Rcpp,Armadillo,我正在尝试使用Rstudio在我的windows系统中设置RcppArmadillo。我已经用命令成功地安装了RcppArmadillo install.packages("RcppArmadillo") 在R控制台中 但是当我尝试编译一个带有RcppArmadillo依赖项的C++代码时,我得到了一个错误,比如 g++ -m64 -I"C:/PROGRA~1/R/R-30~1.3/include" -DNDEBUG -I"C:/PROGRA~1/R/R-30~1.3/library/
install.packages("RcppArmadillo")
在R控制台中
<>但是当我尝试编译一个带有RcppArmadillo依赖项的C++代码时,我得到了一个错误,比如
g++ -m64 -I"C:/PROGRA~1/R/R-30~1.3/include" -DNDEBUG -I"C:/PROGRA~1/R/R-30~1.3/library/Rcpp/include" -I"d:/RCompile/CRANpkg/extralibs64/local/include" -O2 -Wall -mtune=core2 -c colrowStat.cpp -o colrowStat.o colrowStat.cpp:5:26: fatal error: RcppArmadillo.h: No such file or directory compilation terminated. make: *** [colrowStat.o] Error 1 Warning message: running command 'make -f "C:/PROGRA~1/R/R-30~1.3/etc/x64/Makeconf" -f "C:/PROGRA~1/R/R-30~1.3/share/make/winshlib.mk" SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="sourceCpp_38187.dll" WIN=64 TCLBIN=64 OBJECTS="colrowStat.o"' had status 2
但是头文件可以在路径_to _my_documents/R/win libraries/3.0/RcppArmadillo/Include中找到
我认为编译的include路径没有这个路径。我不知道如何将此文件夹添加到路径。我非常感谢您对这个问题的帮助。您做错了。有很多方法可以做到这一点,我们记录了其中的几个方法。你在这里所做的不是其中之一 试试这个,然后从那里开始:
R> library(Rcpp)
R> cppFunction("arma::mat op(arma::vec x) { return(x*x.t()); }",
+ depends="RcppArmadillo")
R> op(1:2)
[,1] [,2]
[1,] 1 2
[2,] 2 4
R>
这是一个基本的例子:取一个向量,乘以它的转置,返回结果外积矩阵
您最终想要的是一个包,为此,您可能会比从
RcppArmadillo.package.skeleton()开始做得更糟。
您做得不对。有很多方法可以做到这一点,我们记录了其中的几个方法。你在这里所做的不是其中之一
试试这个,然后从那里开始:
R> library(Rcpp)
R> cppFunction("arma::mat op(arma::vec x) { return(x*x.t()); }",
+ depends="RcppArmadillo")
R> op(1:2)
[,1] [,2]
[1,] 1 2
[2,] 2 4
R>
这是一个基本的例子:取一个向量,乘以它的转置,返回结果外积矩阵
您最终想要的是一个包,为此,您可能会比从
RcppArmadillo.package.skeleton()开始做得更糟。
您做得不对。有很多方法可以做到这一点,我们记录了其中的几个方法。你在这里所做的不是其中之一
试试这个,然后从那里开始:
R> library(Rcpp)
R> cppFunction("arma::mat op(arma::vec x) { return(x*x.t()); }",
+ depends="RcppArmadillo")
R> op(1:2)
[,1] [,2]
[1,] 1 2
[2,] 2 4
R>
这是一个基本的例子:取一个向量,乘以它的转置,返回结果外积矩阵
您最终想要的是一个包,为此,您可能会比从
RcppArmadillo.package.skeleton()开始做得更糟。
您做得不对。有很多方法可以做到这一点,我们记录了其中的几个方法。你在这里所做的不是其中之一
试试这个,然后从那里开始:
R> library(Rcpp)
R> cppFunction("arma::mat op(arma::vec x) { return(x*x.t()); }",
+ depends="RcppArmadillo")
R> op(1:2)
[,1] [,2]
[1,] 1 2
[2,] 2 4
R>
这是一个基本的例子:取一个向量,乘以它的转置,返回结果外积矩阵
你最终想要的是一个软件包,为此,你可能会比从
RcppArmadillo.package.skeleton()开始做得更糟。
你的问题缺乏细节,但如果你是在Windows机器上使用RStudio,下面是一个完全可重复的示例,介绍如何在不使用内联
包的情况下使用RcppArmadillo
,除了非常短的函数外,这不是理想的。正如德克所指出的,这个建议在其他地方也可以找到——Rcpp*生态系统的文档记录非常丰富,但这可能对新手有所帮助 0预备工作: 您应该安装以下组件:
// LinearRegression.cpp
// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadillo.h>
using namespace arma; // use the Armadillo library for matrix computations
using namespace Rcpp;
// [[Rcpp::export]]
List fnLinRegRcpp(vec vY, mat mX) {
// compute the OLS estimator & model residuals
vec vBeta = solve(mX.t()*mX, mX.t()*vY);
vec vResid = vY - mX * vBeta;
// construct the return object
List ret;
ret["beta"] = vBeta;
ret["resid"] = vResid;
return ret;
}
// END
指示Armadillo库对库的依赖关系
2.R码
这是使用# LinearRegression.R
library(devtools)
library(Rcpp)
library(RcppArmadillo)
Rcpp::sourceCpp("code/LinearRegression.cpp",
showOutput = TRUE,
rebuild = FALSE)
# generate some sample data
iK = 4
iN = 100
mX = cbind(1, matrix(rnorm(iK*iN), iN, iK))
vBeta0 = c(2, 3.5, 0.11, 6.33, 23)
vY = rnorm(iN, mean = mX %*% vBeta0)
# test the function
linReg1 = fnLinRegRcpp(vY, mX)
linReg1$beta # coefficient estimates
# compare the results to the built-in lm.fit function
lm.fit(y = vY, x = mX)$coef # coefficient estimates
# END
您的问题缺乏详细信息,但如果您在Windows计算机上使用RStudio,那么这里有一个完全可复制的示例,说明如何在不使用内联
包的情况下使用
,除了非常短的函数外,这不是理想的。RcppArmadillo
正如德克所指出的,这个建议在其他地方也可以找到——Rcpp*生态系统的文档记录非常丰富,但这可能对新手有所帮助
// LinearRegression.cpp
// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadillo.h>
using namespace arma; // use the Armadillo library for matrix computations
using namespace Rcpp;
// [[Rcpp::export]]
List fnLinRegRcpp(vec vY, mat mX) {
// compute the OLS estimator & model residuals
vec vBeta = solve(mX.t()*mX, mX.t()*vY);
vec vResid = vY - mX * vBeta;
// construct the return object
List ret;
ret["beta"] = vBeta;
ret["resid"] = vResid;
return ret;
}
// END
指示Armadillo库对库的依赖关系
2.R码
这是使用# LinearRegression.R
library(devtools)
library(Rcpp)
library(RcppArmadillo)
Rcpp::sourceCpp("code/LinearRegression.cpp",
showOutput = TRUE,
rebuild = FALSE)
# generate some sample data
iK = 4
iN = 100
mX = cbind(1, matrix(rnorm(iK*iN), iN, iK))
vBeta0 = c(2, 3.5, 0.11, 6.33, 23)
vY = rnorm(iN, mean = mX %*% vBeta0)
# test the function
linReg1 = fnLinRegRcpp(vY, mX)
linReg1$beta # coefficient estimates
# compare the results to the built-in lm.fit function
lm.fit(y = vY, x = mX)$coef # coefficient estimates
# END
您的问题缺乏详细信息,但如果您在Windows计算机上使用RStudio,那么这里有一个完全可复制的示例,说明如何在不使用内联
包的情况下使用
,除了非常短的函数外,这不是理想的。RcppArmadillo
正如德克所指出的,这个建议在其他地方也可以找到——Rcpp*生态系统的文档记录非常丰富,但这可能对新手有所帮助
// LinearRegression.cpp
// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadillo.h>
using namespace arma; // use the Armadillo library for matrix computations
using namespace Rcpp;
// [[Rcpp::export]]
List fnLinRegRcpp(vec vY, mat mX) {
// compute the OLS estimator & model residuals
vec vBeta = solve(mX.t()*mX, mX.t()*vY);
vec vResid = vY - mX * vBeta;
// construct the return object
List ret;
ret["beta"] = vBeta;
ret["resid"] = vResid;
return ret;
}
// END
指示Armadillo库对库的依赖关系
2.R码
这是一个使用