我正在抓一张桌子以获取ID列表。
这是我的清单:
dput(temp_data)
structure(list(tax_number = c("http://www.ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4020012521389",
"http://www.ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4026009507659",
"http://www.ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4013009503390",
"http://www.ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4026010510230",
"http://www.ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4080009506819",
"http://www.ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4066010500147",
"http://www.ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4026013516794",
"http://www.ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4020012520196",
"http://www.ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4020008505166",
"http://www.ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4020010511645"
)), .Names = "tax_number", row.names = c(NA, -10L), class = "data.frame")
库和循环使用:
library(rvest)
library(xml2)
library(tidyr)
for (i in 1:nrow(temp_data)) {
temp_data_point <- temp_data[i, ]
file <- read_html(temp_data_point)
tables <- html_nodes(file, "table")
table1 <- html_table(tables[8], fill = TRUE)
table2 <- as.data.frame(table1)
table2 <- table2[15:24 , 1:2]
colnames(table2)[1] <- "variables"
colnames(table2)[2] <- "results"
temp_table <- spread(table2, variables, results)
temp[i, ] <- temp_table
return(temp)
}
所以基本上,循环遍历列表,将数据填充到临时对象中,但是我的代码并没有使用
将每个迭代记录在一个单独的行中temp[i, ] <- temp_table
相反,我只获得最后一次迭代。
任何我想错的想法?
P.S。
我忘了提。对象temp是在循环外部创建的对象。
str(temp)
'data.frame': 1 obs. of 10 variables:
$ Адреса : chr "БУЛ.МАК.ПРОСВЕТИТЕЛИ 16"
$ Дејност : chr "Дејности на туристичките агенции"
$ Депонент банка: chr "ОХРИДСКА БАНКА А.Д. - ОХРИД"
$ ЕДБ : chr "MK4020012521389"
$ Жиро сметка : chr "000530000101546566"
$ Матичен број : chr "6823769"
$ Место : chr "ОХРИД"
$ Назив : chr "Трговско друштво за производство градеЖништво трговија услуги и угостителство АНТОНИО&БОЈАН ДООЕЛ увоз-извоз Охрид"
$ Правна форма : chr "Д.О.О.Е.Л. ДРУШТВО СО ОГРАНИЧЕНА ОДГОВОРНОСТ НА ЕДНО ЛИЦЕ"
$ Телефон : chr "075/414-585"
它基本上具有相同的列名和一个虚拟行。
答案 0 :(得分:1)
问题是你的函数在初始化data.frame
的第一行后立即返回。取出循环外的return
,例如:
for (i in 1:nrow(temp_data)) {
...
temp[i, ] <- temp_table
}
return(temp)