R-在for循环中使用多个函数会导致错误-它们适用于Hansard API
基本上,我要做的是使用R-在for循环中使用多个函数会导致错误-它们适用于Hansard API,r,function,for-loop,web-scraping,R,Function,For Loop,Web Scraping,基本上,我要做的是使用theyworkforyou.co.UKAPI生成一个.csv文件,其中包含英国下议院议员在给定时间范围内的所有演讲。我编写了一个收集数据的函数: getData <- function(url){ require(jsonlite) raw.data <- readLines(url, warn="F") rd <- fromJSON(raw.data) rd <- as.data.frame(rd) return(rd) }
theyworkforyou.co.UK
API生成一个.csv
文件,其中包含英国下议院议员在给定时间范围内的所有演讲。我编写了一个收集数据的函数:
getData <- function(url){
require(jsonlite)
raw.data <- readLines(url, warn="F")
rd <- fromJSON(raw.data)
rd <- as.data.frame(rd)
return(rd)
}
例如,这个命令
test.df <- getData(Scraper[1])
test.df试试这个(在MP.ID上循环)
lappy(MP.ID,函数(mpid){
url循环写入错误,请尝试:
for(i in 1:650){
Contributions <- getData(Scraper[i])
textClean(Contributions)
}
为了更具概括性
另外,您应该将命令require(jsonlite)
移出该函数,否则它每次都会调用它,而您只需要在一个会话中调用它一次
如果这不能解决您的问题,请粘贴一个dput(test.df)
,否则要测试它,我们必须注册一个API密钥。非常感谢,这成功了!也感谢您花时间解释我出错的原因以及如何改进。我非常感谢您的时间!您好,这也成功了。非常感谢您,我不敢相信这个问题花费了我8个小时的时间ife可以用不同的方式简单地解决。你认为这个解决方案通常优于循环吗?没问题。请阅读哈德利书里的章节,如果有帮助,请给出答案。
textClean <- function(scrapedData){
Speaker.ID <- scrapedData$rows.person_id[1]
slimScrape <- scrapedData[c(9,16,20)]
slimScrape$Year <- substr(slimScrape$rows.hdate,1,4)
slimScrape$Year <- as.numeric(slimScrape$Year)
slimScrape <- subset(slimScrape,Year==2015)
colnames(slimScrape) <- c("Date","Person.ID","Text.Full","Year")
write.csv(slimScrape,file = paste0("HansardScrapes/","hansard",Speaker.ID,".csv"))
}
for(i in 1:650(Scraper)){
Contributions <- getData(Scraper[i])
textClean(Contributions)
}
lapply(MP.ID, function(mpid){
url <- paste0("http://www.theyworkforyou.com/api/getHansard?key=SECRET=",mpid,"&year=2015&order=d&num=1000&output=js")
scrapedData <- getData(url)
textClean (scrapedData)
})
for(i in 1:650){
Contributions <- getData(Scraper[i])
textClean(Contributions)
}
for(i in 1:length(Scraper)){...