从Rcpp打印部分数据帧到屏幕

时间:2014-05-04 23:15:58

标签: r 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对象并没有帮助,因为它只是给出了编译错误。有什么建议吗?

谢谢!

1 个答案:

答案 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中已存在的内容 - printheadtail等等。