我已经使用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
中所有公司的信息。
答案 0 :(得分:3)
检查此解决方案:
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)
)