我正试图从MLB api中提取游戏信息。我可以按日期提取,但我当天不能使用**通配符,否则我会收到HTTP错误400。
library(tidyverse)
library(baseballr)
games <- get_game_pks_mlb(date = '2021-04-01', level_ids = 1)
games %>%
select(game_pk, teams.away.team.name, teams.home.team.name)
game_pk teams.away.team.name teams.home.team.name
1 634642 Toronto Blue Jays New York Yankees
2 634645 Cleveland Indians Detroit Tigers
3 634638 Minnesota Twins Milwaukee Brewers
然而,我不想每天都进行扫描,因为1(这需要很长时间,2(这会发送很多请求。另外,在我提取所有这些信息后,我将不得不再次分段并逐个提取信息。
我认为某种for循环可以实现这一点,但出于某种原因,我真的不善于理解for和while循环。
编辑:基于最初的期望,我尝试了以下解决方案,并得到了以下结果:
x <- c("2021-04-01", "2021-04-02")
games <- as_tibble()
for (x in x) {
games <- rbind(games, get_game_pks_mlb(date = x, level_ids = 1))
}
Error in rbind(deparse.level, ...) :
numbers of columns of arguments do not match
games <- get_game_pks_mlb(date = x, level_ids = 1)
Error: lexical error: invalid char in json text.
http://statsapi.mlb.com/api/v1/
(right here) ------^
您可以尝试类似的东西
dates <- c("2021-04-01", "2021-04-02", "2021-04-03")
games <- data.frame()
for (date in dates) {
games <- rbind(games, get_game_pks_mlb(date = date, level_ids = 1))
}
因此,首先创建一个你想要检索的日期向量,然后在这些日期上循环并将这些数据帧绑定在一起。这不是最好的方式,但却是一个很好的开始方式。