我正在从python转换为R,这是我第一次解析Json。我已经尝试过jsonlite,RJSONIO和rjson。它们都停在getlabskaters <- fromJSON(getlabskatersRaw)
。为了稍微解释一下此脚本,因为我显然需要一些有关如何正确解析json的帮助,它会开始购买返回一个网站的网站,该网站将返回一些我在for循环中使用的球队,以返回所有具有该球队列表的球员。奇怪的是,当我运行上述fromJSON
时不会发生该错误,仅当将其放入for循环中时才会发生。我已经检查了paste0
和print(getlabskatersRaw)
的链接。所有这些似乎都可以浏览。对错误的一些帮助将是非常棒的,如果您无聊并且对更好的解析策略有任何建议,我将不胜枚举。
library(magrittr)
library(readr)
library(tidyr)
library(dplyr)
library(lubridate)
library(jsonlite)
library(httr)
library(stringi)
library(tidyverse)
library(httr)
# GET Todays date
today <- Sys.Date()
#Json return from URL
getlabteamsRaw<-paste0('https://www.fantasylabs.com/api/lines/4/', as.character(today),'/startinggoalies')
# Turn Value into List
getlabteams <- fromJSON(getlabteamsRaw)
# Parse home team
team<-getlabteams$GoalieMatchups$Properties$HomeTeam
# Convert
Home_Fullname<-as.data.frame(team)
team<-getlabteams$GoalieMatchups$Properties$VisitorTeam
Away_Fullname<-as.data.frame(team)
LabTeams <- full_join(Home_Fullname, Away_Fullname, by = c("team"))
# PLAYER INDIVIDUAL NULL DF's
lab_skaters_df <- NULL
for(labtm in LabTeams){
getlabskatersRaw<-paste0('https://www.fantasylabs.com/api/lines/4/', as.character(labtm),'/', as.character(today))
### THE ERROR IS HERE########
getlabskaters <- fromJSON(getlabskatersRaw)
# Parse Player name
new<-getlabskaters$PlayerLines$Properties$FullName
# Convert Value to Dataframe
Fullname<-as.data.frame(new)
#APPEND FEATURE
lab_skaters_df <- rbind(lab_skaters_df, Fullname)
}
我认识到这不是一个答案,因为我只是在转储代码,没有解释问题,但这对您有用。我还清理了您的代码(特别是您正在加载一堆您实际上并未使用或已经通过library(tidyverse)
加载的软件包),并且我正在使用map_df
软件包中的purrr
函数在团队中循环,而不是在循环中循环。
library(jsonlite)
library(tidyverse)
# GET Todays date
today <- Sys.Date()
#Json return from URL
getlabteamsRaw <- paste0('https://www.fantasylabs.com/api/lines/4/', today, '/startinggoalies')
# Turn Value into List
getlabteams <- fromJSON(getlabteamsRaw)
teams <- c(getlabteams$GoalieMatchups$Properties$HomeTeam, getlabteams$GoalieMatchups$Properties$VisitorTeam)
myfun <- function(x) {
getlabskatersRaw <- paste0('https://www.fantasylabs.com/api/lines/4/', x,'/', today)
getlabskaters <- fromJSON(getlabskatersRaw)
select(getlabskaters$PlayerLines$Properties, FullName, Position, Position, Line, Team, OppTeam, Salary_DK, Salary_FD, ActualPoints_DK, ActualPoints_FD, ImpPts_DK, ImpPts_FD)
}
myfinal_df <- map_df(teams, myfun)
# Wait a few seconds
myfinal_df
FullName Position Line Team OppTeam Salary_DK Salary_FD
1 Phillip Danault 1C 1F Montreal Canadiens Chicago Blackhawks 5400 5500
2 Carey Price 1G 1G Montreal Canadiens Chicago Blackhawks 7900 8400
3 Ben Chiarot 1LD 1D Montreal Canadiens Chicago Blackhawks 4400 4000
4 Tomas Tatar 1LW 1F Montreal Canadiens Chicago Blackhawks 5800 6400
5 Shea Weber 1RD 1D Montreal Canadiens Chicago Blackhawks 6400 6200