В настоящее время я пытаюсь создать график рассеяния возврата риска, используя следующий код
chart.RiskReturnScatter(performance[x:y, portfolio.list], Rf = rf, main = "", cex.axis = 1.5, cex.lab = 1.5)
кадр данных производительности [x: y, portfolio.list] отформатирован как:
HR Muni Bond HR Taxable Bond Composite Portfolio
2017-12-31 NA -0.006 -0.0025071641
2018-03-31 NA -0.003 -0.0012671892
2018-06-30 NA 0.007 0.0028773074
2018-09-30 NA -0.001 -0.0004108567
Я изменил свой код, чтобы заменить NA нулями, полагая, что это исправит ошибку:
chart.RiskReturnScatter(performance[x:y, portfolio.list][is.na(performance[x:y, portfolio.list])]<-0,Rf=rf,main="", cex.axis = 1.5, cex.lab = 1.5)
Нет, это не решило проблему. Я получил следующую ошибку: «Ошибка в checkData (R): данные не могут быть преобразованы во временные ряды. Если вы пытаетесь передать имена из объекта данных с одним столбцом, вы должны использовать форму data [row, columns, drop = FALSE] '. У Rownames должны быть стандартные форматы даты, например' 1985-03-15 '. "
Я вернулся к чертежной доске и добавил tk_xts для приведения кадра данных обратно в формат xts, используя этот код:
chart.RiskReturnScatter(tk_xts(performance[x:y, portfolio.list][is.na(performance[x:y, portfolio.list])]<-0, by 1),Rf=rf,main="", cex.axis = 1.5, cex.lab = 1.5)
Я думаю, что готов к удару 3. Теперь я получаю эту ошибку: «Ошибка в xts :: xts (data, ...): order.by требует соответствующего объекта на основе времени»
Я не уверен, что делать дальше. Любые предложения приветствуются.
Спасибо.