申し訳ありませんが、Bloomberg ユーザー以外はこの例を再現できません。
その他については、Rblpapiとそのsubscribe関数を使用しています。データ フレーム、マトリックス、または配列のようなものを作成し、サブスクリプションによってストリーミングされる値を入力したいと考えています。
BBComm コンポーネントが稼働していると仮定すると、私の例は次のようになります。
require(Rblpapi)
con <- blpConnect()
securities <- c('SX5E 07/20/18 C3400 Index',
'SX5E 07/20/18 C3450 Index',
'SX5E 07/20/18 C3500 Index')
これらのフィールドで 3 x 2 マトリックスを埋めたいと思います。
fields <- c('BID', 'ASK')
パフォーマンスのオーバーヘッドがほとんどなく、次のようなマトリックスを作成できると思います。
mat <- matrix(data = NA,
nrow = 3,
ncol = 2)
今、私は目的を埋めるためにsubscribeと その引数を使用しています。fun
i <- 1
subscribe(securities = securities,
fields = fields,
fun = function(x){
if (i > length(securities))
i <<- 1
tryCatch(
expr = {
mat[i, 1] <<- x$data$BID
mat[i, 2] <<- x$data$ASK
i <<- i + 1
},
error = function(e){
message(e)
},
finally = {}
)
})
結果:
Error in subscribe_Impl(con, securities, fields, fun, options, identity) :
Evaluation error: number of items to replace is not a multiple of replacement length.
もちろん、これは機能しません。ストリーミングされたデータでインデックスを使用する方法がよくわからないからです。$演算子は、名前でデータポイントを取得するのに問題ないようです-私がBIDandで行ったように-しかし、どの値が を参照しているか、または をASK参照しているかを把握する方法が見つかりません。証券間の値の所有権を取得できないため、互いに区別できない数値のストリームを取得しているようです。securities[1]securities[2]
インデックスを使用するx$data$BID[1]と、同じエラーがスローされます。