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

如何解决R语言中dimnames不匹配及数据长度与行数不符的矩阵报错?

问题解析与解决

先搞懂两个报错/警告的原因

1. 警告信息:data length [92] is not a sub-multiple or multiple of the number of rows [24]

你要创建的是24行×4列的矩阵,总元素数应该是24×4=96,但你的datos只有92个元素,数量不匹配。R创建矩阵时要求数据长度必须是行数×列数的整数倍,否则会触发警告,这里因为差了4个元素,所以弹出这条提示。

2. 报错信息:length of 'dimnames' [1] not equal to array extent

dimnames=list(dias, horas)里,第一个元素对应行名,第二个对应列名。你设置了矩阵24行,所以行名长度必须是24,但dias只有4个元素;列名需要4个,但horas有24个,完全搞反了,这就是报错的核心原因。

具体解决方案

根据你的需求,有两种处理方式:

方案一:补全datos到96个元素,保持24×4的矩阵

如果需要保留24小时×4天的结构,把datos补到96个元素(比如补NA表示缺失值),同时修正行名和列名的顺序:

# 补4个NA到datos末尾,凑够96个元素
datos <- c(Mondays, Tuesdays, Wednesdays, Thursdays, rep(NA, 4))
dias <- c("Monday","Tuesday","Wednesday","Thursday")
horas <- 0:23
# 行名是horas(24个),列名是dias(4个)
days <- matrix(datos, nrow=24, ncol=4, dimnames=list(horas, dias))
days

方案二:调整矩阵维度,适配92个元素

如果不想补数据,92刚好是23×4,所以可以把行数改成23,同时修正行名范围:

dias <- c("Monday","Tuesday","Wednesday","Thursday")
# 行名改成0到22,共23个
horas <- 0:22
days <- matrix(datos, nrow=23, ncol=4, dimnames=list(horas, dias))
days

额外提醒

创建矩阵时一定要注意:

  • 数据总长度必须等于行数×列数,否则会触发警告或异常
  • dimnames的第一个列表元素对应行名,长度必须等于行数;第二个对应列名,长度必须等于列数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:05:39