###前提・実現したいこと
R,C++ 共に初心者ですがよろしくお願いします。
R言語で時間のかかる処理を Rcpp を介して C++ のコードで関数を実装しようとしています。
R言語からRcppを介して C++ に受け取った引数 DataFrame型の中のベクトルの型を判定する方法がわからずに躓いています。
typeid で型名を取得してみたのですが全て同じ型名で分岐しようがない状態です。
C++ で他に型を判定する方法はございませんでしょうか。
拙いコードで申し訳ございませんがご指摘をお願いいたします。
###該当のソースコード
C++
// [[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"
###補足情報(言語/FW/ツール等のバージョンなど)
Windows 10
RStudio 1.044
Rcpp 0.12.5
gcc (i686-posix-dwarf, Built by MinGW-W64 project) 4.9.3
R version
platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status
major 3
minor 3.1
year 2016
month 06
day 21
svn rev 70800
language R
version.string R version 3.3.1 (2016-06-21)
nickname Bug in Your Hair
Rcpp サイト:https://cran.r-project.org/web/packages/Rcpp/index.html
※ StackoverflowにWポストしています。
まだ回答がついていません
会員登録して回答してみよう