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

R语言:如何将表格列表转换为数据框列表且保留原格式?

问题:保留原表格格式将table列表转为数据框列表

我有一个包含2个table对象的列表,具体代码如下:

set.seed(222)
df = data.frame(x = trunc(runif(10,0,2)),
                y = trunc(runif(10,4,6)),
                z = trunc(runif(10,19,21)),
                m = trunc(runif(10,28,30)))
df


t1 = table(df$x,df$y)
t2=table(df$z,df$m)


L = list(t1,t2)

当我使用lapply(L,as.data.frame)进行转换时,得到的结果为:

[[1]]
  Var1 Var2 Freq
1    0    4    0
2    1    4    2
3    0    5    5
4    1    5    3

[[2]]
  Var1 Var2 Freq
1   19   28    2
2   20   28    3
3   19   29    3
4   20   29    2

该结果改变了原table的格式,我尝试使用spread函数修复此问题但未成功,请问如何将表格列表转换为数据框列表且不改变原表格的格式?


解决方案

使用as.data.frame.matrix()替代as.data.frame(),这个函数会保留原table的宽格式结构,和原table的行列布局完全一致:

lapply(L, as.data.frame.matrix)

执行后输出结果:

[[1]]
   4 5
0  0 5
1  2 3

[[2]]
   28 29
19  2  3
20  3  2

原理说明

as.data.frame()默认会将table对象转换为长格式的频数表(Var1/Var2/Freq三列),而as.data.frame.matrix()会将table视为矩阵直接转换,保留原有的行、列分组结构,完美匹配原table的格式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:40:28