2017-02-04 1 views
0

Je vais télécharger les 10-K 2005 pour plusieurs sociétés dans R en utilisant le paquet EDGAR. J'ai une mini-boucle pour tester ce qui fonctionne:Invite 'Oui' à chaque fois pour obtenirFilings dans R

for (CIK in c(789019, 777676, 849399)){ 
    getFilings(2005,CIK,'10-K') 
} 

Cependant, chaque fois que cela fonctionne, je reçois un oui/non rapide et je dois taper « oui »:

Total number of filings to be downloaded=1. Do you want to download (yes/no)? yes 
Total number of filings to be downloaded=1. Do you want to download (yes/no)? yes 
Total number of filings to be downloaded=1. Do you want to download (yes/no)? yes 

Comment puis-je l'invite R pour répondre 'oui' pour chaque série? Merci

Répondre

2

S'il vous plaît rappelez-vous d'inclure un exemple minimal reproductible dans votre question, y compris library(...) et toutes les autres commandes nécessaires:

library(edgar) 
report <- getMasterIndex(2005) 

Nous pouvons contourner l'invite en faisant une chirurgie de code. Ici, nous récupérons le code pour getFilings, et remplaçons la ligne qui demande l'invite par un simple message. Nous écrivons alors la nouvelle fonction (my_getFilings) dans un fichier temporaire et source ce fichier:

x <- capture.output(dput(edgar::getFilings)) 
x <- gsub("choice <- .*", "cat(paste(msg3, '\n')); choice <- 'yes'", x) 
x <- gsub("^function", "my_getFilings <- function", x) 
writeLines(x, con = tmp <- tempfile()) 
source(tmp) 

Tout téléchargements: fins

for (CIK in c(789019, 777676, 849399)){ 
    my_getFilings(2005, CIK, '10-K') 
} 
list.files(file.path(getwd(), "Edgar filings")) 
# [1] "777676_10-K_2005" "789019_10-K_2005" "849399_10-K_2005" 
+1

Nice. Une autre façon de remplacer cette ligne serait 'body (getFilings) [[6]] [[3]] [[3]] [[3]] [[8]] <- citation (choix <-" oui ")' . Fou, mais ça marche –

+0

Brillant! Je vous remercie. Je vais également inclure le code de la bibliothèque la prochaine fois. –