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

Kaggle Notebook(R内核)展示含列表列的数据框时报错

Kaggle R内核中starwars数据集显示报错的解决方案

在Kaggle Notebook的R内核里运行这段代码:

library(tidyverse)
starwars

会触发如下报错:

ERROR while rich displaying an object: Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, : arguments imply differing number of rows: 5, 6, 7, 4, 3, 1, 2

报错原因

问题出在starwars数据集的films、vehicles、starships三列——它们是列表类型,每行对应的列表元素长度不一致(比如有的角色参演了5部星战电影,有的只参演了1部)。Kaggle的富显示组件在尝试将这些列表列渲染成表格格式时,无法处理这种长度不匹配的元素,从而抛出"行数不匹配"的错误。

解决办法

1. 移除列表类型列

用select()剔除包含可变长度列表的列,只保留常规数据类型的列,比如你已经验证有效的写法:

# 保留前10列,移除最后3个列表列
starwars1 <- starwars %>% select(1:10)
starwars1

2. 将列表列转换为字符串

如果需要保留这些列的信息,可以把列表元素拼接成逗号分隔的字符串,统一格式:

starwars_clean <- starwars %>%
  mutate(
    films = str_c(films, collapse = ", "),
    vehicles = str_c(vehicles, collapse = ", "),
    starships = str_c(starships, collapse = ", ")
  )
starwars_clean

3. 使用基础打印方式绕开富显示

如果只是临时查看数据,不想修改数据集,可以用print()的基础打印模式,跳过Kaggle的富渲染:

# 以列表形式打印
print(starwars, type = "list")
# 或者转换为普通数据框输出
starwars %>% as.data.frame(stringsAsFactors = FALSE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 11:12:05