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

运行Purrr::map_dfr时出现「! Can't combine」错误的解决咨询

解决map_dfr绑定空列表与数据框的错误

问题原因

你遇到的错误是因为map_dfr尝试合并的对象类型不统一:部分返回结果的odds是数据框,而第52个结果的odds是空列表,dplyr::bind_rows无法合并这两种类型。

解决方案

提供两种可行的修改方式:

方法1:先过滤空结果,再合并

先用map获取所有结果,过滤掉odds为空列表的项,再调用map_dfr合并:

library(purrr)
library(dplyr)

game_odds <- games_eventids %>%
  map(~ game_odds_func(eventId = .x)) %>%
  keep(~ !purrr::is_empty(.x$odds)) %>%  # 保留odds非空的结果
  map_dfr(~ .x$odds)

方法2:在映射时统一返回类型

在map_dfr的匿名函数中,将空列表转换为空数据框,确保所有返回值类型一致:

library(purrr)
library(dplyr)

game_odds <- map_dfr(games_eventids, function(event_id) {
  res <- game_odds_func(eventId = event_id)
  # 空列表转为空tibble,与数据框结构兼容
  if (purrr::is_empty(res$odds)) {
    tibble::tibble()
  } else {
    res$odds
  }
})

优化建议

如果有权限修改game_odds_func,建议让函数在无数据时直接返回空数据框(而非空列表),这样后续调用map_dfr时无需额外处理,代码更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 04:52:34