2014-05-04 30 views
0

我在将数据帧中的测试转换为rcpp可以打印到屏幕上的某些问题时遇到了一些问题。我的数据的相关部分看起来是这样的:从Rcpp打印数据帧的一部分到屏幕

ID   MATURITY CRNCY 
ZZ001 Corp 1/1/2001 USD 
ZZ002 Corp 1/1/2004 USD 
ZZ003 Corp 1/1/2001 USD 
ZZ004 Corp 1/1/2001 USD 

在错误检查功能,我希望能够打印出的ID列,这样我就可以记录下来,让计算进行。这是我写的代码的最小版本。

void print_ID(DataFrame df){ 
    Rcout << "ID" << as<CharacterVector>(df["ID"]) << std::endl ; 
     // Returns address 
    Rcout << "ID" << as<std::string>(df["ID"]) << std::endl ; 
    Rcout << "ID" << as<char>(df["ID"]) << std::endl ; 
     // Error: expecting a string 
} 

编译进行的很好,但第一行只是返回df指针的地址,第二行和第三行产生了错误消息。解引用df对象并没有帮助,因为它只是给出了一个编译错误。有什么建议么?

谢谢!

+0

您必须遍历此并打印每个元素 - 或者定义一个可在内部执行的漂亮打印功能。 –

回答

2

对于这样的事情,我只会回到R函数来汇总一个对象。 Rcpp使这很简单。

#include <Rcpp.h> 
using namespace Rcpp; 

Function structure("str"); 

// [[Rcpp::export]] 
void RcppStr(SEXP x) { 
    structure(x); 
} 

/*** R 
RcppStr(data.frame(x=1:5, y=letters[1:5])) 
*/ 

如果你想要更细致的控制,你将不得不编写自己漂亮的打印机(如Dirk说的)。但对于这样的事情来说,值得利用已有的R-print,head,tail等等。