質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

受付中

R言語->Rcpp->C++でDataFrameのベクトルの型を判定する方法

bakabon88
bakabon88

総合スコア8

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0回答

0評価

0クリップ

1227閲覧

投稿2016/11/18 23:02

編集2022/01/12 10:55

###前提・実現したいこと
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ポストしています。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。