Rblpapi BDH: Как добавить столбец на основе формулы BDH и ссылки на столбец?

Я пытаюсь создать столбец с помощью RBLPAPI BDH

StockMove <- function(ticker){
StockMove <- bdh("MSFT Equity", "Chg_Pct_1D", x$Date, x$Date)
colnames(ernmove) <- NULL
ernmove <- ernmove[,2]

}

но я продолжаю получать ошибку

Error in eval(substitute(expr), envir, enclos) : expecting a single value
Called from: bdh_Impl(con, securities, fields, start.date, end.datee, options, overrides, verbose, identity)

x$Date — это столбец исторических дат, и я пытаюсь создать новый столбец и извлечь данные BDH для каждой строки, соответствующей столбцу x$Date в этой строке. . В качестве проверки работоспособности я использовал Sys.Date() вместо ввода x$Date, и он работает правильно.

Спасибо за любой совет, это мой первый вопрос, поэтому извиняюсь за любые ошибки.


person Frank Drin    schedule 06.12.2016    source источник
comment
проверить формат вашего x$Date? Если это строки, попробуйте преобразовать в Date с помощью as.Date? Я знаю эту проблему из bdh в Excel.   -  person Erik Olson    schedule 07.12.2016
comment
Спасибо за мысль. Я проверил с помощью sapply (x, class), и оказалось, что столбец действительно имеет формат даты. На самом деле не уверен, что делать отсюда ...   -  person Frank Drin    schedule 08.12.2016
comment
Вы говорите, что xDate - это столбец дат. BDH требует дату начала и дату окончания. Он не очень подходит для получения списка дат. И даже не по одной дате за раз, потому что у праздников есть пустые данные, если вы не используете переопределение для их заполнения. Когда мне нужны точные даты, которые я уже знаю, я сначала получаю полный диапазон дат от начала до конца с помощью BDH, а затем ищу на нужные мне даты.   -  person Erik Olson    schedule 08.12.2016


Ответы (1)


Вы говорите, что x$Date - это столбец дат. BDH требует дату начала и дату окончания. Я думаю, это то, о чем говорит вам ошибка. Вы даете ему столбец, где он хочет одно значение.

Я никогда не писал ни одного R, так что простите меня, если это глючит:

startDate <- min(x$Date)
endDate <-max(x$Date)
bdh("MSFT Equity", "Chg_Pct_1D", startDate, endDate)

BDH плохо подходит для извлечения данных из заданного списка дат. И даже не по одной дате за раз, потому что у праздников есть пустые данные, если вы не используете переопределение для их заполнения.

Вместо этого я всегда получаю полный диапазон дат от начала до конца с помощью BDH. Если у меня есть столбец с конкретными датами, которые мне нужны, я ищу их в этом результате.

person Erik Olson    schedule 08.12.2016
comment
Верный. Пропустил вопрос два дня назад. - person Dirk Eddelbuettel; 08.12.2016
comment
Спасибо за введение, ребята. Проблема в том, что я пытаюсь добавить столбец, который генерирует возврат для списка определенных дат. Итак, GetData[,ErnMoveVar] ‹- Stockmove(ticker) Итак, у меня есть этот список дат, но эта формула, похоже, не может запустить функцию возврата BDH за 1 день для каждой даты в ряду. Не знаю, как еще это сделать. Спасибо еще раз - person Frank Drin; 08.12.2016