You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用StatbombR库获取数据时遇条件长度错误求助

问题解决:Error in if (MatchesDF == "ALL") { : the condition has length > 1

错误原因

你遇到的错误是因为调用StatsBombFreeEvents时传入的MatchesDF是完整的赛事数据框,函数内部的if (MatchesDF == "ALL")判断在面对数据框时会返回长度大于1的逻辑向量,不符合if条件对单一逻辑值的要求。同时你的代码顺序有误——应该先筛选目标赛事,再获取对应赛事的比赛数据,最后拉取事件数据。

修正后的代码

install.packages("devtools")
install.packages("remotes")
devtools::install_github("statsbomb/StatsBombR")
devtools::install_github("FCrSTATS/SBpitch")
install.packages("SDMTools", version = "1.1-221")
library(SBpitch)
library(StatsBombR)
library(dplyr) # 必须加载dplyr才能使用管道符和filter函数

# 1. 获取所有免费赛事列表
Comp <- FreeCompetitions()

# 2. 筛选目标赛事(2020/2021赛季英超,competition_id=37)
Comp_filtered <- Comp %>%
  filter(competition_id == 37 & season_name == "2020/2021")

# 3. 获取该赛事对应的所有比赛数据
Matches <- FreeMatches(Comp_filtered)

# 4. 拉取这些比赛的事件数据
StatsBombData <- StatsBombFreeEvents(MatchesDF = Matches, Parallel = T)

额外注意事项

  • 原代码未加载dplyr包,会导致%>%和filter无法运行,必须补充加载
  • 若并行加载仍出现问题,可尝试将Parallel = T改为Parallel = F,关闭并行模式
  • 确保你的R版本和包版本兼容,若后续仍有报错,可尝试重新安装StatsBombR包

内容的提问来源于stack exchange,提问作者Ani_stuck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 23:26:07