for循环如果文件不存在则转到下一条记录

时间:2015-08-31 19:48:47

标签: r

我有以下代码,由于某种原因,我无法将其转到下一条记录。我把print(innallURL)放在if(!file.exists)命令之前,然后我得到了所有的url,我把它放在没有的地方,没有任何显示,所以这让我觉得文件失败了。存在的部分。我测试了5个URL,它们在Web目录中工作/存在。我已经在其他循环中使用了下一个并且没有任何问题。我也尝试在字符串的前面添加url =。我在这里搜索过,但我只能找到我在例子中使用的公式。请指出我忽略的愚蠢的东西。哈!谢谢!

gidURLs <- as.list(as.data.frame(t(allGids)))

#get pitches

#set filename

for (thisgidURL in gidURLs) {

innallURL = paste(thisgidURL, "inning/inning_all.xml", sep="")

  if (!file.exists(innallURL)) next

print(innallURL)

pitches <- read_xml(innallURL)

# get all at-bats ---------------------------------------------------------

atbat <- xml_find_all(pitches, "//atbat")

# make a giant data frame -------------------------------------------------

bind_rows(lapply(atbat, function(x) {

  pitches <- xml_find_all(x, "./pitch")

bind_rows(lapply(pitches, function(y) {
  data.frame(t(xml_attrs(y)), stringsAsFactors=FALSE)
})) -> pitch_dat

pitch_dat$atbat_num <- xml_attr(x, "num")

pitch_dat

})) -> bats

game_id = substr(url, 66, 95)
bats$game_id <- game_id

allbatsdf <- data.frame(bats)
allbats <- rbind(bats, allbats)

}

在file.exists命令之前打印时,列表中的innallURLs。

"http://gd2.mlb.com/components/game/win/year_2015/month_01/day_30/gid_2015_01_30_magwin_oriwin_1/inning/inning_all.xml"
"http://gd2.mlb.com/components/game/win/year_2015/month_01/day_31/gid_2015_01_31_sydwin_prtwin_1/inning/inning_all.xml"

1 个答案:

答案 0 :(得分:0)

我们可以使用httr包来使用GET方法。

library(httr)
if(GET(innallURL)$status_code!=200) next