1) В первой строке нам не нужно paste
. В следующей строке нам не нужно url(...)
. Также мы ограничили ввод до 1000 строк, чтобы проиллюстрировать пример за меньшее время. Мы можем опустить gsub
, если мы укажем na.strings
в fread
. Также свертывание ввода в одну строку позволяет исключить textConnection
в fread
.
library(data.table)
name <- "https://www.sec.gov/Archives/edgar/full-index/2016/QTR1/master.idx"
master <- readLines(name, 1000)
master <- master[grep("SC 13(D|G)", master)]
master <- paste(master, collapse = "\n")
master_table <- fread(master, sep = "|", na.strings = "")
2) Второй способ, который может быть быстрее, - сначала загрузить файл, а затем fread
, как показано на рисунке.
name <- "https://www.sec.gov/Archives/edgar/full-index/2016/QTR1/master.idx"
download.file(name, "master.txt")
master_table <- fread('findstr "SC 13[DG]" master.txt', sep = "|", na.strings = "")
Выше для Windows. Для Linux с bash замените последнюю строку на:
master_table <- fread("grep 'SC 13[DG]' master.txt", sep = "|", na.strings = "")