Принуждение пограничного объекта к тибле - PullRequest
0 голосов
/ 22 января 2020

Есть ли способ привести пограничный объект из пакета PortfolioAnalytics в таблицу?

В следующем фрагменте вы можете найти небольшой воспроизводимый пример того, чего я пытаюсь достичь.

if ( !("tidyverse") %in% rownames(installed.packages())) {
    install.packages("tidyverse")
  }

if ( !("timetk") %in% rownames(installed.packages())) {
    install.packages("timetk")
  }

if ( !("PortfolioAnalytics") %in% rownames(installed.packages())) {
    install.packages("PortfolioAnalytics")
  }

if ( !("rvest") %in% rownames(installed.packages())) {
    install.packages("rvest")
  }

library(tidyverse)
library(timetk)
library(PortfolioAnalytics)
library(rvest)

N <- 10
M <- 2
dates <- as.Date(seq(1,N,1))
assets <- c("V1","V2")

historicalReturn <- matrix(rnorm(N*M,mean=0,sd=1), N, M) %>%
                    as.data.frame() %>%
                     mutate(date = dates) %>%
                      tk_xts(silent = T)
pspec <- assets %>%
          portfolio.spec() %>%
           add.constraint(type = "box", min = -1, max = 1) %>%
            add.constraint(type = "weight_sum", min_sum = 1, max_sum = 1) %>%
             add.objective(type = "return", name = "mean") %>%
              add.objective(type = "risk", name = "ES", arguments = list(p = 0.95,clean = "boudt"), enabled = TRUE)

meanES.ef <- historicalReturn %>% 
              create.EfficientFrontier(pspec, type = "mean-ES", n.portfolios = 25)

Я хотел бы использовать такой рабочий процесс:

meanES.ef %>%
 pluck(2) %>%
  as_tibble()

К сожалению, я получаю следующую ошибку:

Error in as.data.frame.default(value, stringsAsFactors = FALSE) : 
  cannot coerce class ‘"frontier"’ to a data.frame

Я могу подтвердить, что объект имеет границу класса выполнив следующее

meanES.ef %>%
 pluck(2) %>%
  class()

[1] "frontier"

Итак, как указано выше, могу ли я как-нибудь привести пограничный объект meanES.ef $ frontier к столу? Я хотел бы передать это tidyverse функции, так что я считаю это предложение актуальным.

Заранее спасибо.

...