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