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

R语言如何让table交叉表保留缺失组合输出固定c(2,3,3)维度数组

解决方案

方法1:生成table时提前指定因子水平(推荐)

R的table()函数默认会自动丢弃没有观测值的水平,你只需要在构造交叉表前,将三个统计变量显式转为指定水平的因子,即可强制保留所有维度,缺失组合自动填充为0:

# 仅需修改你代码中生成tmp的部分
var1 <- factor(as.vector(x[-c(1,nrow(x)),-c(1,ncol(x))]), levels = c(0, 1))
var2 <- factor(as.vector(nonedge.likes.x[,-c(1,ncol(likes.x))]), levels = c(0, 1, 2))
var3 <- factor(as.vector(nonedge.likes.y[-c(1, nrow(likes.y)),]), levels = c(0, 1, 2))
tmp <- table(var1, var2, var3)

运行后不管输入矩阵是什么取值,tmp都会固定为c(2,3,3)维度的表数组。

方法2:事后将压缩table转换为固定维度数组

如果你已经生成了压缩后的table对象,也可以手动构造全0数组再填充现有值:

# 初始化固定维度的全0数组
fixed_tmp <- array(0, dim = c(2,3,3), 
                   dimnames = list(c("0","1"), c("0","1","2"), c("0","1","2")))
# 提取现有table的观测值
existing_data <- as.data.frame(tmp)
# 逐行填充到固定维度数组
for (i in seq_len(nrow(existing_data))) {
  fixed_tmp[
    as.character(existing_data[i,1]),
    as.character(existing_data[i,2]),
    as.character(existing_data[i,3])
  ] <- existing_data[i,4]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:15:08