2017-08-04 52 views
1

我的代码中有什么问题?我不知道如何结合结果。 这段代码是ups交付数据,搜索运单很麻烦,所以我试了一下!但是很难。R重复代码,抓取结果

这是代码,

library(stringr) 
Houseno <- c("1Z30A2920429127213","1Z30A2920429463047","1Z30A2920422913297","1Z30A2920439995052","1Z30A2920423741926") 
Houseno 
for (i in Houseno) 
{ 
url <- (paste0("https://iship.com/trackit/track.aspx?Track=",i)) 
line <- readLines(url, encoding = "UTF-8") 

#number 
upshouse <- line[which(str_detect(line,"UPS Tracking Number:"))] 
upshouse <- gsub("UPS Tracking Number:|<.+?>|\t|&nbsp;", "", upshouse) 

#result 
upsresult <- line[which(str_detect(line,"Status:"))] 
upsresult <- gsub("Status:|<.+?>|\t", "", upsresult) 

#com 
com <- data.frame(NO=upshouse, CP=upsresult) 
print(com) 
} 

这段代码的结果是

   NO  CP 
1 1Z30A2920429127213 DELIVERED 
       NO  CP 
1 1Z30A2920429463047 DELIVERED 
       NO  CP 
1 1Z30A2920422913297 DELIVERED 
       NO  CP 
1 1Z30A2920439995052 DELIVERED 
       NO  CP 
1 1Z30A2920423741926 DELIVERED 

但我想这个结果是如下,

  NO   CP 
1 1Z30A2920429127213 DELIVERED 
2 1Z30A2920429463047 DELIVERED 
3 1Z30A2920422913297 DELIVERED 
4 1Z30A2920439995052 DELIVERED 
5 1Z30A2920423741926 DELIVERED 

谢谢。

回答

0

你可以添加你的中间结果列表,rowbind它们如下:

library(stringr) 
Houseno <- c("1Z30A2920429127213","1Z30A2920429463047","1Z30A2920422913297","1Z30A2920439995052","1Z30A2920423741926") 

result <- vector('list',length(Houseno)) #initialize list with correct length 
for (i in 1:length(Houseno)) 
{ 
    url <- (paste0("https://iship.com/trackit/track.aspx?Track=",Houseno[i])) 
    line <- readLines(url, encoding = "UTF-8") 

    #number 
    upshouse <- line[which(str_detect(line,"UPS Tracking Number:"))] 
    upshouse <- gsub("UPS Tracking Number:|<.+?>|\t|&nbsp;", "", upshouse) 

    #result 
    upsresult <- line[which(str_detect(line,"Status:"))] 
    upsresult <- gsub("Status:|<.+?>|\t", "", upsresult) 

    #com 
    com <- data.frame(NO=upshouse, CP=upsresult) 
    result[[i]] <- com # add result to list 

} 

do.call(rbind,result) #rowbind the list to a single dataframe 

结果:

    NO  CP 
1 1Z30A2920429127213 DELIVERED 
2 1Z30A2920429463047 DELIVERED 
3 1Z30A2920422913297 DELIVERED 
4 1Z30A2920439995052 DELIVERED 
5 1Z30A2920423741926 DELIVERED 

希望这有助于!

+0

噢,我的天啊..谢谢天才! –