如何创建包含单个列表列的R数据框?
列表列数据框的创建方法
当你尝试用data.frame()直接将长度不一的列表转为单列数据框时,会触发错误——因为data.frame()默认会把每个列表元素按长度拆分成多列,要求各元素长度一致。以下是几种可行的解决方式:
方法1:用I()包裹列表保留结构
I()函数可以标记对象为“原样保留”,阻止data.frame()自动拆分列表元素:
abc = list(c(1,2), 3, c(4,5,6)) df = data.frame(col1 = I(abc))
验证结果:
> df$col1 [[1]] [1] 1 2 [[2]] [1] 3 [[3]] [1] 4 5 6
方法2:使用tibble包(更简洁)
tibble对列表列有原生支持,无需额外处理就能直接创建:
library(tibble) abc = list(c(1,2), 3, c(4,5,6)) df = tibble(col1 = abc)
方法3:手动初始化列表列
先创建一个指定长度的空列表列,再赋值:
abc = list(c(1,2), 3, c(4,5,6)) df = data.frame(col1 = vector("list", length(abc))) df$col1 = abc
内容的提问来源于stack exchange,提问作者Elis
相关产品推荐
相关产品推荐

