запуск функции над списком списков в аккуратном формате - PullRequest
0 голосов
/ 28 января 2019

Я скачал данные, используя пакет edgarWebR.

library(edgarWebR)

ticker <- c('NVDA', 'GOOG')
years <- 5

company.details <- lapply(ticker, company_details)

У меня есть два списка, и я пытаюсь применить функцию к каждому из списков:

filing_doc <- function(href) {
  sapply(href, function(x) {
    filing_documents(x) %>%
      filter( type == "10-K" ) %>% select(href) }) %>%
    unlist(recursive = TRUE, use.names = FALSE)
}

Я применяю функцию:

company.reports <- company.details$filings %>%
  filter(type == "10-K") %>%
  slice(1:years) %>% 
  mutate(doc.href = filing_doc(href),
         mdlink = paste0("[Filing Link](", href, ")"),
         reportLink = paste0("[10-K Link](", doc.href, ")")) %>%
  select(filing_date, accession_number, mdlink, reportLink, href, doc.href)

Однако это не будет работать, так как я пытаюсь применить это к списку из 2.

Следующие работы

company.reports <- company.details[[1]]$filings %>%
  filter(type == "10-K") %>%
  slice(1:years) %>% 
  mutate(doc.href = filing_doc(href),
         mdlink = paste0("[Filing Link](", href, ")"),
         reportLink = paste0("[10-K Link](", doc.href, ")")) %>%
  select(filing_date, accession_number, mdlink, reportLink, href, doc.href)

Где я только что добавил [[1]] в первую строку.У меня вопрос, как я могу применить один и тот же код к нескольким спискам - я сталкиваюсь с ошибками, используя lapply и функции конвейера.

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

1 Ответ

0 голосов
/ 28 января 2019

Проверьте это решение:

company.reports <-
  company.details %>%
  map(
    ~.x$filings %>%
      filter(type == "10-K") %>%
      slice(1:years) %>% 
      mutate(doc.href = filing_doc(href),
             mdlink = paste0("[Filing Link](", href, ")"),
             reportLink = paste0("[10-K Link](", doc.href, ")")) %>%
      select(filing_date, accession_number, mdlink, reportLink, href, doc.href)
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...