purrr :: map "Ошибка: переменные tidyselect не были зарегистрированы" - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь отобразить результаты из скользящей функции cal c, используя функцию purrr::map() с целью построения результатов.

Вот часть моего фрейма данных (df):

        ret Date       Tickers      
      <dbl> <date>     <chr>        
 1  0.00581 2019-01-03 A Equity
 2  0.00198 2019-01-03 B Equity
 3  0.00410 2019-01-03 C Equity
 4  0.0134  2019-01-03 D Equity
 5  0.00440 2019-01-03 E Equity
 6  0.00798 2019-01-03 F Equity
 7  0.00625 2019-01-03 G Equity
 8  0.00278 2019-01-03 H Equity
 9 -0.00841 2019-01-03 I Equity
10 -0.0174  2019-01-03 J Equity
# ... with 9,066 more rows

При попытке выполнить команду «выполнить» я получаю сообщение об ошибке "Error: No tidyselect variables were registered"

Roll_Results <- 
  Roll_Dates[1:3] %>% 
  map(~PVC_Function(df, ., Min_Valid_N = 0.8, Min_Dates = 40))

Я не включил всю функцию здесь.

Любая помощь будет принята с благодарностью.

Ниже приведен воспроизводимый пример Это не слишком основа c, но содержит все необходимые тонкости исходной задачи.

library(tidyverse)
library(PerformanceAnalytics)
library(dplyr)
library(tbl2xts)
library(lubridate)
library(tsBSS)
library(rmsfuns)

# set up the data
data <- read_csv("https://raw.githubusercontent.com/Nicktz/ExDat/master/extdata/SectorTRIs.csv")
data <-  
  data %>%
  gather(Sectors, TRI, -Date) %>%
  group_by(Sectors) %>% # Tidy up!
  mutate(Returns = ((log(TRI)-log(lag(TRI))))) %>% 
  filter(Date > first(Date)) %>% ungroup() %>% select(-TRI) %>% 
  filter()
data_ts <- data %>% 
  tbl_xts(., cols_to_xts = "Returns", spread_by = "Sectors")

## now start setting up for the rolling function
Roll_N <- 50
Dates_To_Consider <- unique(df$Date)
r <- as.Date(rollapply(Dates_To_Consider, Roll_N, c) )
Roll_Dates <- lapply(1:nrow(r), function(i) r[i, ])

# This gives me a rolling dates list to use in map below
PVC_Foo <- function(data, Roll_Dates, Min_Valid_N = 0.8, Min_Dates = 40){

  DatUse <- Roll_Dates

  # following runs the PVCA and plots the results. 
  df_PVA <- PVC(data_ts)

  Result <- list()
  Result$W <- tibble( date = first(DatUse), W = df_PVA$W) %>% nest(W = W)
  Result$Mu <- tibble( date = first(DatUse), Mu= df_PVA$MU) %>% nest(Mu = Mu)
  Result$S <- df_PVA$S %>% xts_tbl %>% set_names(c("date", paste0("PVC", 1:ncol(df_PVA$S)) )) %>% nest(data = everything()) %>% mutate(Date = first(DatUse))

  Result
}

# here is were I am having issues, I do not understand the error message that r is returning. 
# ( Error: No tidyselect variables were registered ) 

Roll_Results <- 
  Roll_Dates[1] %>% 
  map(~PVC_Foo(df, ., Min_Valid_N = 0.8, Min_Dates = 40))

Как только я преодолею это препятствие, я планирую извлечь соответствующую информацию и сюжет с помощью

S_Matrixes_Per_Date <- 
  Roll_Results %>% map("S") %>% bind_rows

# Plot:
Roll_Results %>% map("S") %>% bind_rows %>% filter(Date == first(Date)) %>% 
  unnest(data) %>% select(-Date) %>% 
  gather(PVC, Value, -date) %>% filter(PVC %in% c("PVC1", "PVC2")) %>% 
  ggplot() + geom_line(aes(date, Value, color = PVC))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...