我在Excel中使用BBG插件构建了一个动态更新的电子表格,使用BBG API提取价格数据。我试图将该表中的表拉入R并使用以下代码创建一个简单的散点图:
wb <- loadWorkbook("Fx Vol Framework.xlsx")
data <- readWorksheet(wb,sheet = "Carry", region = "AL40:AN68",header=TRUE, rownames = 1)
plot(data,ylim = c(-2,12))
with(data,text(data, labels = row.names(data), pos = 1))
reg1 <- lm(data[,2]~data[,1])
abline(reg1)
我正在调用的区域(AL40:AN68)填充了HLOOKUP公式的结果,该公式从具有BBG API的单元格调用。当我运行代码时,我得到以下错误(为每个单元格重复相同的错误文本):
There were 50 or more warnings (use warnings() to see the first 50)
> warnings()
Warning messages:
1: Error when trying to evaluate cell AM41 - Name '_xll.BDP' is completely unknown in the current workbook
如果我回到excel表并用数值填充相同的区域AL40:AN68(复制 - >粘贴值),保存工作簿,并运行相同的代码,我得到我期待的散点图原始代码。有没有办法让我使用Bloomberg API使用单元格获取散点图,还是需要使用简单的数值运行它?我需要Bbg软件包吗?谢谢。
答案 0 :(得分:0)
我不熟悉BBG插件,但似乎在调用readWorksheet后你想调用一个实际打开工作簿的函数。我认为这在某种意义上是“完成约束”。无论如何,我有时需要在R和excel之间传递数据。以下是我使用包 RDCOMClient 解决问题的方法。
R代码:
library(RDCOMClient)
exB <- COMCreate("Excel.Application")
book <- exB$Workbooks()$Open("C:/"the right directory/exp.xlsx")
dNames <- book$Worksheets("Sheet1")$Range("AL40:AN40")
dValues <- book$Worksheets("Sheet1")$Range("AL41:AN68")
dNames <- unlist(dNames[["Value"]])
dValues <- unlist(dValues[["Value"]])
data1 <- matrix(dValues,ncol=3)
colnames(data1) <- dNames
data1 <- as.data.frame(data1)
plot(data1$v1,data1$v2)
显然,你可以通过多种方式绘制事物,模拟事物或其他东西,但这会把事情带入R,这可能是最好的地方。无论如何,还可以在http://www.omegahat.org/RDCOMClient/Docs/introduction.html
上使用RDCOMClient软件包连接R和Excel以进行快速数据任务。答案 1 :(得分:0)
对于其他用户来说,现在更简单的方法可能是使用CRAN的Rblpapi程序包直接连接到Bloomberg API。