2017-07-16 28 views
1

我正在爲表的ID列表進行刮取。將新行添加到循環中的data.frame中

這是我的名單:

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") 

庫和使用循環IM:

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是在循環之外創建的對象。

​​

它基本上具有相同的列名和一個虛擬行。

+1

你在哪裏創建對象'臨時'? – Nate

+1

請注意'colnames(table2)[1] < - 「variables」; colnames(table2)[2] < - 「results」可以寫成'names(table2)< - c(「variables」,「results」)'。 – lmo

+0

@NateDay嗨。我剛更新了這個問題。我忘了提及臨時對象是在循環之外創建的。 – Prometheus

回答

1

問題是你的函數在初始化data.frame的第一行後立即返回。採取return以外的循環,例如:

for (i in 1:nrow(temp_data)) { 
    ... 
    temp[i, ] <- temp_table 
} 

return(temp) 
+1

我應該想到這一點。謝謝你的幫助Erhan! – Prometheus

相關問題