Похоже, вы хотите перебрать URL-адреса.Для каждого, который вы хотите прочитать, разберите его на фрейм данных и извлеките первый фрейм данных в списке.Таким образом, шаги от read_html()
до extract2()
должны быть выполнены в цикле.
Один из вариантов - использовать цикл purrr::map_dfr()
, так как похоже, что вы хотите в конце связать все в один тибл..
Номинально это может выглядеть следующим образом:
library(rvest)
library(dplyr)
library(magrittr)
library(purrr)
links %>%
map_dfr(~read_html(.x) %>%
html_table() %>%
extract2(1) )
Однако оказывается, что у вас отсутствуют значения, представленные дефисами (-
).Некоторые таблицы имеют такие, а некоторые нет.Когда они присутствуют, R читает ваши целочисленные столбцы как символы, а когда их нет, целые числа читаются как целочисленные столбцы.Это вызывает проблемы при связывании всего вместе.
Я не видел аргумента в read_html()
, чтобы иметь дело с ними напрямую (я искал эквивалент na.strings
в read.table()
или na
в readr::read_csv()
).Мой обходной путь состоял в том, чтобы преобразовать дефисы в NA, используя функцию replace_with_na_all()
из пакета naniar (см. виньетка здесь ).Затем я преобразовал все столбцы в соответствующий тип с помощью type.convert()
.
Все это было сделано в цикле map_dfr()
.
Вот пример с только первыми двумя URL-адресами в links
.
links[1:2] %>%
map_dfr(~read_html(.x) %>%
html_table() %>%
extract2(1) %>%
naniar::replace_with_na_all(condition = ~.x == "-") %>%
type.convert(as.is = TRUE) )
# A tibble: 15 x 9
Symbol Company Exchange Date `Price Range` Price Currency Shares Actions
<chr> <chr> <chr> <chr> <chr> <dbl> <chr> <int> <chr>
1 2003.HK Vcredit Hldg Ltd HKSE Jun 21, 2018 NA 20 HKD 49969000 Priced
2 2003.HK Vcredit Hldg Ltd HKSE Jun 21, 2018 NA 20 HKD 11745600 Priced
3 2003.HK Vcredit Hldg Ltd HKSE Jun 21, 2018 NA 20 HKD 6857200 Priced
4 0000 Vcredit Hldg Ltd HKSE Jun 12, 2018 NA NA HKD NA Expected
5 6571.JP QB Net Holdings Co Ltd Japan OTC Mar 14, 2018 21.11 - 21.11 NA Y 9785900 Expected
6 1621.HK Vico Intl Hldg Ltd HKSE Mar 05, 2018 NA 0.35 HKD 175000000 Priced
7 PZM.AX Piston Mach Ltd ASX Mar 05, 2018 0.32 - 0.32 NA AU 50000000 Expected
8 "" Agp Ltd Karachi Mar 05, 2018 0.76 - 0.76 80 PKR 8750000 Priced
9 GRC.L GRC International Group PLC LSE Mar 05, 2018 0.98 - 0.98 0.7 GBP 8414286 Priced
10 ACPH.BR Acacia Pharma Group PLC Brussels Mar 05, 2018 3.24 - 4.16 3.6 EUR 3175413 Priced
11 ACPH.BR Acacia Pharma Group PLC Brussels Mar 05, 2018 3.24 - 4.16 3.6 EUR 7935698 Priced
12 GCI.AX Gryphon Capital Income Tr ASX May 23, 2018 1.57 - 1.57 2 AUD 87650000 Priced
13 GCI.AX Gryphon Capital Income Tr ASX May 04, 2018 1.57 - 1.57 NA AUD 50000000 Expected
14 STRL.L Stirling Inds Plc LSE Mar 06, 2018 1.40 - 1.40 1 GBP 8881002 Priced
15 541006.BO Angel Fibers Ltd BSE Mar 06, 2018 NA 27 INR 6408000 Priced