2016-11-17 113 views
0

我有一段简单的R代码,它从一个网站读取html数据,然后我尝试遍历页面并从每个页面获取数据。我已经无数次地使用了这段代码,它很有用。它将来自每个页面的结果添加到R变量中,但由于某种原因,它不能工作。有任何想法吗?R函数将不会修改全局变量

library(XML) 
library(RCurl) 


data <- NULL 

getData <- function(url) { 
#For some reason cant read directly from site, need to use RCurl to get the data first 
xData <- getURL(url) 
table <- data.frame(readHTMLTable(xData)$'NULL') 
data <- table 
} 

getData(url="https://steemdb.com/accounts/reputation?page=1") 
+0

X < - 的getData(URL =“https://steemdb.com/accounts/reputation?page = 1“) x包含数据。 – Indi

+0

如何为函数添加'return(data)'?我不会建议混合全球环境和功能环境。 –

回答

1

我想我知道什么是错

变化data <- tabledata <<- table你的函数

您将结果分配给该函数的局部环境中,而<<-将其分配给全球环境。

我建议您尝试以下

library(rvest) 
getData <- function(url) { html_table(read_html(url)) } 

data <- getData("https://steemdb.com/accounts/reputation?page=1") 

甚至更​​好

library(rvest) 
getData <- function(url) { html_table(read_html(url)) } 
steemdb.url <-"https://steemdb.com/accounts/reputation?page=" 

data <- lapply(1:100, function(i) getData(paste0(steemdb.url, i))) 
data <- do.call(rbind, data) 
View(data) 

1:100 will get you the first 100 pages. 
+0

感谢dimitris_ps,只是编辑你的代码do.call(rbind,data)需要做两次才能工作。谢谢您的帮助。 – Kharoof