Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Rstudio在windows中设置Rcpp Armadillo_Windows_R_Rcpp_Armadillo - Fatal编程技术网

使用Rstudio在windows中设置Rcpp Armadillo

使用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/

我正在尝试使用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/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预备工作: 您应该安装以下组件:

  • R包
  • R包
  • R包
  • 1.C++代码: 该示例是计算线性回归模型的OLS估计量的简单示例。这里是C++文件,其中一个函数( FnLeReGRCPP < /代码>)将设计矩阵作为输入,生成OLS系数估计,模型残差作为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码

    这是使用 SooCeCpp函数编译C++代码的例子,并结合使用函数的例子,并将输出与内置代码< LM.Fux函数进行比较。

    # 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*生态系统的文档记录非常丰富,但这可能对新手有所帮助

    0预备工作: 您应该安装以下组件:

  • R包
  • R包
  • R包
  • 1.C++代码: 该示例是计算线性回归模型的OLS估计量的简单示例。这里是C++文件,其中一个函数( FnLeReGRCPP < /代码>)将设计矩阵作为输入,生成OLS系数估计,模型残差作为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码

    这是使用 SooCeCpp函数编译C++代码的例子,并结合使用函数的例子,并将输出与内置代码< LM.Fux函数进行比较。

    # 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*生态系统的文档记录非常丰富,但这可能对新手有所帮助

    0预备工作: 您应该安装以下组件:

  • R包
  • R包
  • R包
  • 1.C++代码: 该示例是计算线性回归模型的OLS估计量的简单示例。这里是C++文件,其中一个函数( FnLeReGRCPP < /代码>)将设计矩阵作为输入,生成OLS系数估计,模型残差作为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码

    这是一个使用函数编译C++代码的例子,并结合使用函数的例子,比较了输出T