RcppでDataFrameのベクターの型を判定する方法
R,C++ 共に初心者です。
RcppでDataFrame内のベクターの型を判定する方法がわからずに躓いています。
的外れなコードで申し訳ございませんがご指摘をお願いします。
【環境】
Windows 10
RStudio 1.044
Rcpp 0.12.5
実験コード
// [[Rcpp::export]]
StringVector test(DataFrame df)
{
String s0 = typeid(df).name();
String s1 = typeid(df[0]).name();
String s2 = typeid(df[1]).name();
String s3 = typeid(df[2]).name();
String s4 = typeid(df[3]).name();
String s5 = typeid(df[4]).name();
String s6 = typeid(df[5]).name();
// if(strstr(s1, "Date")) { ... } 型に合わせた処理をしたいが
// if( ... ) { ...} すべて同じ型名なので分岐できない
// :
StringVector v = StringVector::create(s0,s1,s2,s3,s4,s5,s6);
return v;
}
/*** R
dd <- data.frame(
date_ = c(Sys.Date()),
time_ = c(Sys.time()),
double_ = c(1.2),
int_ = c(1),
string_ = c("ABC"),
logical_ = c(TRUE)
)
test(dd)
*/
> test(dd)
[1] "N4Rcpp14DataFrame_ImplINS_15PreserveStorageEEE"
[2] "N4Rcpp8internal13generic_proxyILi19EEE"
[3] "N4Rcpp8internal13generic_proxyILi19EEE"
[4] "N4Rcpp8internal13generic_proxyILi19EEE"
[5] "N4Rcpp8internal13generic_proxyILi19EEE"
[6] "N4Rcpp8internal13generic_proxyILi19EEE"
[7] "N4Rcpp8internal13generic_proxyILi19EEE"