5

ブール値のRベクトルをC++dynamic_bitsetベクトルに渡す最良の方法は何ですか? dynamic_bitsetベクトルクラスで可能なように、ポインタとベクトルの長さを使用してオブジェクトを構築する方法はありますか? Rcpp の使用をお勧めしますか?
あなたの助けと時間をありがとう...

4

1 に答える 1

2

私は次のdynamic_bitsetように作成します:

#include <Rcpp.h>
#include <boost/dynamic_bitset.hpp>

using namespace Rcpp ;

// [[Rcpp::export]]
void create_dynamic_bitset( LogicalVector x ){  
    int n = x.size() ;
    boost::dynamic_bitset<> bs(n);
    for( int i=0; i<n; i++) bs[i] = x[i] ;

    // do something with the bitset
    for (boost::dynamic_bitset<>::size_type i = 0; i < x.size(); ++i)
        Rcout << x[i];
    Rcout << "\n";

}

内部的には、R 論理ベクトルは単なるint配列です。したがって、を構築するためのより直接的な方法はなく、反復するdynamic_bitset必要があります。

また、入力の欠損値に注意してくださいLogicalVector

または、入力データを生のベクトル (Rcpp クラスRawVector) として格納し、adynamic_bitset<Rbyte>を使用してブロック コンストラクターを使用することもできます。

void create_dynamic_bitset( RawVector x ){  
    boost::dynamic_bitset<Rbyte> bs(x.begin(), x.end());
}
于 2013-07-30T06:27:17.387 に答える