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

MTG JSON转CSV失败求助:R代码执行出现列大小兼容错误

解决MTG JSON转CSV的R语言报错问题

错误原因

你遇到的tibble列大小不兼容错误,根源是原JSON的结构特性:每个卡牌名称作为键,对应的值是包含卡牌信息的列表,部分特殊卡牌(比如多面牌)的列表长度大于1。你直接将整个结构展平后转数据框,会把卡牌名作为列,不同列的行数(列表长度)不一致,而tibble不允许这种列维度不匹配的情况。

修正后的代码

library(jsonlite)
library(tidyverse)

# 直接读取JSON文件,无需手动读行
json_data <- fromJSON("data.json")

# 提取核心的卡牌数据列表
card_list <- json_data$data

# 将每个卡牌的信息列表转为数据框,合并所有行,.id参数保留卡牌名称
df <- map_dfr(card_list, ~as.data.frame(.x), .id = "card_name")

# 展平嵌套结构(比如identifiers、purchaseUrls这类子对象)
df_flattened <- flatten(df)

# 写入CSV文件
write_csv(df_flattened, "mtg_cards.csv")

代码说明

  1. 读取JSON:直接用fromJSON读取文件,比readLines更简洁,能自动解析完整的JSON结构。
  2. 转换为长格式数据框:用map_dfr遍历每个卡牌对应的信息列表,将其转为数据框并按行合并,.id = "card_name"会新增一列记录卡牌名称,避免丢失原键信息。
  3. 展平嵌套列:flatten处理像identifiers、purchaseUrls这类嵌套的子对象,把它们的属性拆成单独的列(比如identifiers_scryfallOracleId),符合CSV的扁平结构要求。
  4. 写入CSV:write_csv生成最终的CSV文件,每一行对应一个卡牌条目,列是卡牌的各类属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:10:42