首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Rblpapi订阅函数创建数据框

如何使用Rblpapi订阅函数创建数据框
EN

Stack Overflow用户
提问于 2018-07-09 22:34:19
回答 0查看 247关注 0票数 1

很抱歉,这个例子不能被那些不是Bloomberg用户的人复制。

对于其他的,我使用Rblpapi和它的subscribe函数。我想创建一个类似于数据框、矩阵或数组的东西,并用订阅流式传输的值填充它。

假设您的BBComm组件已经启动并运行,我的示例如下:

代码语言:javascript
复制
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矩阵:

代码语言:javascript
复制
fields <- c('BID', 'ASK')

我想我可以创建一个这样的矩阵,几乎没有性能开销:

代码语言:javascript
复制
mat <- matrix(data = NA,
          nrow = 3,
          ncol = 2)

现在我使用subscribe和它的参数fun来进行填充,所以类似这样的东西(尽管看起来很难看,而且效率很低):

代码语言:javascript
复制
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 = {}
              )
          })

结果:

代码语言:javascript
复制
Error in subscribe_Impl(con, securities, fields, fun, options, identity) : 
  Evaluation error: number of items to replace is not a multiple of replacement length.

当然,这是行不通的,因为我真的不知道如何在流式数据上使用索引。$运算符似乎可以按名称检索数据点-就像我对BIDASK所做的那样-但我找不到一种方法来确定哪些值引用的是securities[1]还是securities[2]。似乎我得到了一个相互无法区分的数值流,因为我无法在证券中检索这些值的所有权。

x$data$BID[1]上使用索引会抛出相同的错误。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51248029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档