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)){...