r-如何正确使用lapply与Bloomberg Rlpapi包来拉取多组股票行情



我不确定这是一个lapply问题还是关于Rlpapi语法的问题。Rlpapi是一个非常棒的包,用于通过R.从bloomberg提取数据

因为并不是每个人都能访问bloomberg,而且涉及到很多股票行情,这使得提供一个可复制的例子变得更具挑战性,所以希望有人能在没有代表的情况下提供解决方案。

当我使用以下代码时,我可以成功地提取我想要的数据:

library(Rblpapi)
library(tidyverse)
# Connect to Bloomberg  --------------------------------------------------------------------
blpConnect()

# Specify beginning and end dates
beg_date <- as.Date("1927-12-30", format = "%Y-%m-%d")
end_date <- Sys.Date()

# Specify Bloomberg field to pull
my_field <- "PX_LAST"

# Call ticker script to load tickers
source(file.path(my_path, "tickers.R"), echo = FALSE)

# Create function to pull Bloomberg data
pull_fx <- function(input_tickers, input_field) {
df <- as.data.frame(
bdh(
input_tickers,
input_field,
start.date               = beg_date,
end.date                 = end_date,
include.non.trading.days = TRUE
)
)
}
# Pull data  
rates_level_df         <- pull_fx(rates_tickers_level, my_field)
equity_level_us_df     <- pull_fx(equity_tickers_us_level, my_field)

当我试图用所有的股票行情机提取数据,这样我就不必为每组股票行情机重复pull_fx(tickers_here, my_field)代码时,我尝试了以下方法:

list_df <- lapply(tickers_all, pull_fx, input_field = my_field)

其中tickers_all是具有所有股票代码分组(例如"rates_tickers_level")的字符向量。我会为每个ticker集合返回一个数据帧列表,但列表中的每个数据帧都是空的。因此,我无法判断我只是错误地使用了lapply,还是在bdh命令(Rlpapi包)中使用lapply时提供了错误的语法。

我期望的输出是一个数据帧列表,其中包含为每组tickers提取的数据(即tickers_all字符向量中包含的"rates_level_df"、"equity_level_us_df"等数据帧)

感谢您的帮助!

尝试将mgettickers_all一起使用

list_df <- lapply(mget(tickers_all), pull_fx, input_field = my_field)

为了理解为什么我们需要mget,请考虑这个简单的示例

a <- 1
b <- 2
tmp <- c('a', 'b')
tmp
#[1] "a" "b"

CCD_ 6具有作为字符串存储在其中的变量CCD_ 7和CCD_。为了得到存储在ab中的值1和2,我们需要mget

mget(tmp)
#$a
#[1] 1
#$b
#[1] 2

最新更新