使用Rcpp&订购数据帧Dplyr

时间:2018-06-13 02:00:26

标签: r dplyr rcpp

在这个论坛上的第一篇文章,所以随意轻松: - )

我正在尝试使用Rcpp / dplyr对数据帧进行排序。基于较早的 来自Romain的帖子 - 想法是使用OrderVisitor类,如本文所述。

order a dataframe by column in Rcpp

我的问题是我无法编译下面的帖子中定义的MyFunc代码。

C ++:

enter code here

#include <Rcpp.h>
#include <dplyr.h>

using namespace Rcpp;
using namespace dplyr;

// [[Rcpp::export]]
// [[Rcpp::depends(dplyr)]]


DataFrame myFunc(DataFrame data, CharacterVector names) {
    OrderVisitors o(data, names ) ;
    IntegerVector index = o.apply() ;

    DataFrameVisitors visitors( data ) ;
    DataFrame res = visitors.subset(index, "data.frame" ) ;

    return res;  
}

RStudio编译消息:

  

sessioninfo :: SESSION_INFO()   ─会议信息────────────────────────────────────────────────────────────────────────────────────────────── ────────────────────────────────────────────────── ──────────────────    设定值
   版本R版本3.4.1(2017-06-30)    os Windows 7 x64 SP 1
   system x86_64,mingw32
   ui RStudio
   语言(EN)
   整理English_United States.1252
   tz澳大利亚/悉尼
   日期2018-06-13

─包裹───────────────────────────────────────────────────────────────────────────────────────────── ────────────────────────────────────────────────── ────────────────────────  包*版本日期来源
 clisymbols 1.2.0 2017-05-21 CRAN(R 3.4.4)  sessioninfo 1.0.0 2017-06-21 CRAN(R 3.4.4)  with 2.1.2 2018-03-15 CRAN(R 3.4.4)  yaml 2.1.14 2016-11-12 CRAN(R 3.4.1)

  

RCPP :: sourceCpp(&#39; C:/temp/test.cpp')   c:/RBuildTools/3.4/mingw_64/bin/g++ -I&#34; C:/PROGRA~1/R/R-34~1.1/include" -DNDEBUG -I&#34; C:/PROGRA~1/R/R-34~1.1/library/Rcpp/include" -I&#34; C:/PROGRA~1/R/R-34~1.1/library/dplyr/include" -I&#34; C:/PROGRA~1/R/R-34~1.1/library/BH/include" -I&#34; C:/温度&#34; -I&#34; d:/Compiler/gcc-4.9.3/local330/include" -O2 -Wall -mtune = core2 -c test.cpp -o test.o   在C:/PROGRA~1/R/R-34~1.1/library/dplyr/include/dplyr.h:4:0中包含的文件中,                    来自test.cpp:2:   C:/PROGRA~1/R/R-34~1.1/library/dplyr/include/dplyr/main.h:11:19:致命错误:plogr.h:没有这样的文件或目录    #包括                      ^   编译终止。   make:*** [test.o]错误1   警告信息:   运行命令&#39; make -f&#34; C:/PROGRA~1/R/R-34~1.1/etc/x64/Makeconf" -f&#34; C:/PROGRA~1/R/R-34~1.1/share/make/winshlib.mk" SHLIB_LDFLAGS =&#39; $(SHLIB_CXXLDFLAGS)&#39; SHLIB_LD =&#39; $(SHLIB_CXXLD)&#39; SHLIB =&#34; sourceCpp_2.dll&#34; WIN = 64 TCLBIN = 64 OBJECTS =&#34; test.o&#34;&#39;有状态2   Rcpp :: sourceCpp中出错(&#34; C:/temp/test.cpp"):     构建共享库时出现错误1。

所以我想知道的是:

  1. 知道如何正确编译上面的代码吗? plogr有什么问题吗?

  2. 使用Rcpp实现相同结果的任何其他有效方法?

  3. 感谢。

    MSW

1 个答案:

答案 0 :(得分:1)

正如Ralf所说,您可能需要添加其他依赖项。

在这种情况下,您需要以下所有内容:// [[Rcpp::depends(dplyr, plogr, bindrcpp)]]