• みんなのRcpp
  • はじめに
  • 1 Rcppの活用ポイント
  • 2 インストール
    • 2.1 C++コンパイラのインストール
      • 2.1.1 Windows
      • 2.1.2 Mac
      • 2.1.3 Linux
      • 2.1.4 その他の自分でインストールしたコンパイラを使いたい場合
    • 2.2 Rcpp のインストール
  • 3 基本的な使い方
    • 3.1 Rcppコードを書く
  • 4 Rcppにおける関数定義の基本形
  • 5 C++11
    • 5.1 C++11 を有効にする
    • 5.2 おすすめ C++11 機能
      • 5.2.1 初期化リスト
      • 5.2.2 auto
      • 5.2.3 decltype
      • 5.2.4 範囲 for
      • 5.2.5 ラムダ式
  • 6 コンソール画面への出力
  • 7 基本データ型とデータ構造
    • 7.1 基本データ型
    • 7.2 データ構造
  • 8 Vector
    • 8.1 Vectorオブジェクトの作成
    • 8.2 Vector要素へのアクセス
    • 8.3 メンバ関数
      • 8.3.1 length() size()
      • 8.3.2 names()
      • 8.3.3 offset(name) findName(name)
      • 8.3.4 fill(x)
      • 8.3.5 sort()
      • 8.3.6 assign( first_it, last_it)
      • 8.3.7 push_back(x)
      • 8.3.8 push_back( x, name )
      • 8.3.9 push_front(x)
      • 8.3.10 push_front( x, name )
      • 8.3.11 begin()
      • 8.3.12 end()
      • 8.3.13 insert( i, x )
      • 8.3.14 insert( it, x )
      • 8.3.15 erase(i)
      • 8.3.16 erase(it)
      • 8.3.17 erase( first_i, first_i )
      • 8.3.18 erase( first_it, last_it )
      • 8.3.19 containsElementNamed(name)
    • 8.4 静的メンバ関数
      • 8.4.1 get_na()
      • 8.4.2 is_na(x)
      • 8.4.3 create( x1, x2, …)
      • 8.4.4 import( first_it , last_it )
      • 8.4.5 import_transform( first_it, last_it, func)
  • 9 Matrix
    • 9.0.1 作成
    • 9.0.2 要素へのアクセス
    • 9.0.3 行・列・部分行列への参照
    • 9.1 メンバ関数
      • 9.1.1 nrow() rows()
      • 9.1.2 ncol() cols()
      • 9.1.3 row( i )
      • 9.1.4 column( i )
      • 9.1.5 fill_diag( x )
      • 9.1.6 offset(i,j)
    • 9.2 静的メンバ関数
      • 9.2.1 Matrix::diag( size, x )
    • 9.3 その他の関数
      • 9.3.1 rownames( m )
      • 9.3.2 colnames( m )
      • 9.3.3 transpose( m )
  • 10 DataFrame
    • 10.0.1 length() size()
    • 10.0.2 begin()
    • 10.0.3 end()
    • 10.0.4 insert( it, v )
    • 10.0.5 erase(i)
    • 10.0.6 erase(first_it, last_it)
    • 10.0.7 containsElementNamed(name)
    • 10.0.8 inherits(str)
  • 11 List
    • 11.1 オブジェクトの作成
    • 11.2 要素へのアクセス
    • 11.3 メンバ関数
  • 12 S3・S4 クラス
    • 12.1 S3クラス
    • 12.2 S4クラス
      • 12.2.1 slot へのアクセス
      • 12.2.2 新しい S4 クラスのオブジェクトを作成する
  • 13 String
    • 13.1 String オブジェクトの作成
    • 13.2 演算子
    • 13.3 メンバ関数
      • 13.3.1 replace_first( str, new_str)
      • 13.3.2 replace_last( str, new_str)
      • 13.3.3 replace_all( str, new_str)
      • 13.3.4 push_back(str)
      • 13.3.5 push_back(str)
      • 13.3.6 set_na()
      • 13.3.7 get_cstring()
      • 13.3.8 get_encoding()
      • 13.3.9 set_encoding(enc)
      • 13.3.10 コード例
  • 14 Date
    • 14.1 演算子
  • 15 Datetime
    • 15.1 Datetime オブジェクトの作成
    • 15.2 タイムゾーン
    • 15.3 演算子
    • 15.4 メンバ関数
  • 16 RObject
    • 16.0.1 inherits(str)
    • 16.0.2 slot(name)
    • 16.0.3 hasSlot(name)
    • 16.0.4 attr(name)
    • 16.0.5 attributeNames()
    • 16.0.6 hasAttribute(name)
    • 16.0.7 isNULL()
    • 16.0.8 sexp_type()
    • 16.0.9 isObject()
    • 16.0.10 isS4()
    • 16.1 A.20.2 RObject を利用した型の判別
  • 17 Rのオブジェクトを扱う際の注意点
    • 17.1 ベクトル同士の代入
    • 17.2 要素番号の型
    • 17.3 []演算子の返値
    • 17.4 四則演算
  • 18 論理演算
    • 18.1 LogicalVector の正体
    • 18.2 論理演算
    • 18.3 LogicalVector を受け取る関数
      • 18.3.1 all() と any()
      • 18.3.2 ifelse()
    • 18.4 LogicalVector の要素の評価
    • 18.5 Rライクな関数の一覧
      • 18.5.1 ベクトルに関連する関数
      • 18.5.2 文字列に関連する関数
      • 18.5.3 値の検索に関連する関数
      • 18.5.4 重複の値に関連する関数
      • 18.5.5 集合演算に関連する関数
      • 18.5.6 最大値・最小値に関連する関数
      • 18.5.7 集計に関連する関数
      • 18.5.8 端数処理に関連する関数
      • 18.5.9 数学に関連する関数
      • 18.5.10 論理値に関連する関数
      • 18.5.11 NA、Inf、NaNに関連する関数
      • 18.5.12 apply関数
      • 18.5.13 cbind関数
      • 18.5.14 サンプリング関数
  • 19 確率分布
    • 19.1 確率分布関数の基本構造
      • 19.1.1 連続分布
      • 19.1.2 離散分布
      • 19.1.3 一様分布
      • 19.1.4 正規分布
      • 19.1.5 対数正規分布
      • 19.1.6 ガンマ分布
      • 19.1.7 ベータ分布
      • 19.1.8 非心ベータ分布
      • 19.1.9 カイ2乗分布
      • 19.1.10 非心カイ2乗分布
      • 19.1.11 t分布
      • 19.1.12 非心t分布
      • 19.1.13 F分布
      • 19.1.14 非心F分布
      • 19.1.15 コーシー分布
      • 19.1.16 指数分布
      • 19.1.17 ロジスティック分布
      • 19.1.18 ワイブル分布
    • 19.2 離散分布
      • 19.2.1 二項分布
      • 19.2.2 負の二項分布(成功確率を指定するバージョン)
      • 19.2.3 負の二項分布(平均値を指定するバージョン)
      • 19.2.4 ポワソン分布
      • 19.2.5 幾何分布
      • 19.2.6 超幾何分布
      • 19.2.7 ウィルコクソン順位和検定統計量の分布
      • 19.2.8 ウィルコクソン符号順位検定統計量の分布
  • 20 Rの関数を利用する
    • 20.1 Function を用いた方法
    • 20.2 Environment を用いた方法
  • 21 NA NaN Inf NULL
    • 21.1 NA NaN Inf の値
    • 21.2 NA NaN Inf の判定
      • 21.2.1 ベクトルの要素をまとめて判定する場合
      • 21.2.2 ベクトルの要素1つに対して判定する場合
    • 21.3 NULL
    • 21.4 Rcpp で NA を扱う際の注意点
  • 22 属性値
  • 23 factor
  • 24 エラー処理
    • 24.1 stop()とwarning()
    • 24.2 C++ 例外を投げる
  • 25 キャンセル処理
    • 25.0.1 ユーザーからのキャンセルを受け付ける。
  • 26 R Math Library
  • 27 Rのコード中にRcppのコードを埋め込む
  • 28 Environment
    • 28.1 Environment オブジェクトの作成
    • 28.2 環境にあるオブジェクトにアクセスする
    • 28.3 新しい環境を作成する
      • 28.3.1 new_env(size = 29)
      • 28.3.2 new_env(parent, size = 29)
    • 28.4 メンバ関数
      • 28.4.1 get(name)
      • 28.4.2 ls(all)
      • 28.4.3 find(name)
      • 28.4.4 exists(name)
      • 28.4.5 assign( name, x )
      • 28.4.6 isLocked()
      • 28.4.7 remove(name)
      • 28.4.8 lock(bindings = false)
      • 28.4.9 lockBinding(name)
      • 28.4.10 unlockBinding(name){
      • 28.4.11 bindingIsLocked(name)
      • 28.4.12 bindingIsActive(name)
      • 28.4.13 is_user_database()
      • 28.4.14 parent()
      • 28.4.15 new_child(hashed)
    • 28.5 static メンバ関数
      • 28.5.1 Environment::Rcpp_namespace()
      • 28.5.2 Environment::namespace_env(package)
  • 29 イテレーター
  • 30 標準 C++ のデータ構造を利用する
    • 30.1 標準 C++ データ構造と Rcpp データ構造の変換
    • 30.2 標準 C++ データ構造を関数の引数や返値にする
  • 31 標準 C++ アルゴリズム
  • 32 Boost を利用する
  • 33 Rcppを用いたパッケージ作成
    • 33.1 Rcppを用いたパッケージ作成の手順
      • 33.1.1 手動で自作パッケージを Rcpp に対応させる
      • 33.1.2 Rcpp.package.skeleton() を利用する
      • 33.1.3 devtools::use_rcpp() を用いる
    • 33.2 roxygen2 パッケージを用いてパッケージのパッケージのドキュメントを作成する
    • 33.3 自作パッケージで他のパッケージのC/C++関数を利用する
    • 33.4 自作パッケージでサードパーティのC/C++ライブラリを利用する
  • 34 RcppParallel
    • 34.1 インストール
      • 34.1.1 parallelFor, parallelReduce
      • 34.1.2 RVector, RMatrix
    • 34.2 Worker
    • 34.3 例:parallelFor()
    • 34.4 例:parallelReduce()
  • 35 リンク
  • 36 Rcpp Attributes
    • 36.1 利用可能な Rcpp Attributes
      • 36.1.1 Rcpp::export
    • 36.2 Rcpp::interfaces
    • 36.3 Rcpp::depends
    • 36.4 Rcpp::plugins
    • 36.5 Rcpp Attributes を処理する Rcpp の関数
      • 36.5.1 compileAttributes()
  • 37 書き加える可能性のある項目リスト
  • 38 済み
  • Published with bookdown

みんなのRcpp

#include<Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
double rcpp_sum(NumericVector v){
    double sum = 0;
    for(int i=0; i<v.length(); ++i){
        sum += v[i];
    }
    return(sum);
}

/*** R
rcpp_sum(1:10)
*/