2016-11-17 18 views
0

ウェブサイトからhtmlデータを読み込んで、ページをループして各ページからデータを取得しようとしているRコードの単純な部分があります。私はこのコードを何回も使用しています。 R変数には各ページの結果が追加されますが、何らかの理由でこのサイトでは動作しません。何か案は?あなたの関数内data <<- tableR関数はグローバル変数を変更しません

私は私が間違っているものを知っていると思う
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 <しようと提案します= 1 ") xにはデータが含まれています。 – Indi

+0

あなたの関数に 'return(data)'を追加するのはどうですか?私は地球環境と機能環境を混在させることを勧めません。 –

答えて

1

変更data <- table

<<-はそれを割り当てることになる一方であなたは、機能のためにローカル環境に結果を代入しています地球環境。 getData(URL = "https://steemdb.com/accounts/reputation?page -

私はあなたが

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)はこれを動作させるために2回行う必要があります。助けてくれてありがとう。 – Kharoof

関連する問題