2017-10-11 7 views
0

J'ai un lot de tables stockées en .html. Je veux lire les tables dans R, effectuer un nettoyage mineur, puis les enregistrer en tant que .csv.Comment puis-je transmettre à la fois read_html et html_table via lapplication sur une chaîne de fichiers?

Je suis bloqué sur la première partie de ceci. Lorsque j'effectue les opérations suivantes sur un seul .html, tout fonctionne bien:

read_html("file1.html") %>% 
html_table(header = TRUE, fill = TRUE) 

Cependant, lorsque je tente d'appeler lapply je reçois une erreur:

lapply(filenames, read_html %>% 
html_table(header = TRUE, fill = TRUE)) 
#where 'filenames' comes from a list.files operation 

Pour moi, tout ce qui suit « les noms de fichiers, 'est toujours le deuxième argument de lapply (X, FUN) mais clairement, il ne fonctionne pas de cette façon.

+0

Pourriez-vous partager le message d'erreur? L'avez-vous essayé sans l'opérateur de tuyauterie? – Bernhard

+0

Erreur dans UseMethod ("html_table"): aucune méthode applicable pour 'html_table' appliquée à un objet de classe "fonction". Et j'ai envisagé d'essayer sans l'opérateur de tuyau, mais je ne savais pas comment envelopper ces deux opérations. – Albatrosspro

+0

@Albatrosspro Utilisez simplement la forme la plus longue de 'lapply'. –

Répondre

2

En utilisant la forme plus détaillée de lapply devrait fonctionner:

lapply(filenames, function(x) { 
    read_html(x) %>% html_table(header = TRUE, fill = TRUE) 
}) 
+0

Super, merci. – Albatrosspro

+0

@Albatrosspro Pouvez-vous corriger cette réponse? Coche verte à gauche de cette réponse. –