我在将数据框中的测试转换为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
等等。