2016-12-27 50 views
1

我使用rvest程序包來遍歷URL並刮取一些內容。以下是我的代碼示例。針對AWS上的lapply/map/for循環顯示的指針

library(magrittr) 
library(rvest) 

bb <- function(team) { 
Sys.sleep(runif(1,2,7.75)) 
p1 <- try(read_html(paste0("http://www.basketball-reference.com/teams/",team,"/2017.html"))) 

c1 <- p1 %>% try(html_nodes("p")) %>% try(extract2(1)) %>% try(html_text(trim=TRUE)) 
c2 <- p1 %>% try(html_nodes("p")) %>% try(extract2(2)) %>% try(html_text(trim=TRUE)) 

tt <- cbind(team,c1,c2) 
return(tt) 
} 

teams <- c('BOS','CLE','GSW','HOU') 

x1 <- lapply(teams,bb) 

當我在筆記本電腦上本地運行此代碼時,這一切都很好。當我把它放在AWS上時,我得到的輸出包含指針的引用。它看起來像這樣:

節點 BOS <指針:0x6e42f430> <指針:0x6e42f430> 文檔 BOS <指針:0x19099140> <指針:0x19099140> 節點 CLE <指針:0x6a149730> <指針:0x6a149730> doc CLE <指針:0x6a0a6900> <指針:0x6a0a6900> 節點 GSW <指針:0x1eed3e40> <指針:0x1eed3e40> DOC GSW <指針:0x1e4fdc10> <指針:0x1e4fdc10> 節點 侯 <指針:0x6a14d6e0> <指針:0x6a14d6e0> doc HOU <指針:0x6ca16c00> <指針:0x6ca16c00>

如果我嘗試mapfor循環,我會得到相同的結果。我假設這是如何設置我的AWS EC2實例?我正在使用此AMI:http://www.louisaslett.com/RStudio_AMI/

任何想法如何獲得常規值而不是這些指針?

回答

1

我仍然不確定這裏發生了什麼,但是我發現了一些在本地和AWS上使用上述AMI工作的東西。基本上你需要把多種嘗試的功能和把周圍的功能內使用的臨時變量,就像這樣:

bb <- function(team) { 
Sys.sleep(runif(1,2,7.75)) 
try(p1 <- read_html(paste0("http://www.basketball-reference.com/teams/",team,"/2017.html"))) 
try(c1 <- p1 %>% html_nodes("p") %>% html_text(trim=TRUE)) 
try(c2 <- p1 %>% html_nodes("p")) %>% html_text(trim=TRUE)) 

try(tt <- cbind(team,c1,c2)) 
return(tt) 
} 

所以沒有知道發生了什麼,但解決方案爲我工作。 :)