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

使用sweep()函数时出现数组维度报错的技术咨询

问题解决:sweep()处理矩阵列报错的修复

首先是生成矩阵的代码:

A <- matrix(c(1:9), nrow = 3)
a <- c(1:8)
b <- seq(1, 7, length.out = 8)
c <- rep(c(1,2), each=2, times=2)
B <- cbind(a, b, c)
C <- rbind(A, B)

执行以下代码时出现报错:

C[,ncol(C)] <- sweep(C[,ncol(C)], 2, 2, `*`)

报错信息翻译

错误信息:array(STATS, dims[perm]) 出错:‘dims’的长度不能为0

错误原因

提取矩阵最后一列C[,ncol(C)]时,R默认会将其降维为一维向量,而sweep()函数需要处理的是带有维度属性的数组或矩阵。向量没有维度信息(维度长度为0),因此触发了该错误。

修复方案

方案一:保留列的矩阵维度

使用drop=FALSE参数,让提取的列保持矩阵结构,这样sweep()就能正常工作:

C[,ncol(C), drop=FALSE] <- sweep(C[,ncol(C), drop=FALSE], 2, 2, `*`)

方案二:直接向量乘法(更简洁)

其实不需要用sweep(),直接对提取的列向量做乘法操作即可,代码更简单高效:

C[,ncol(C)] <- C[,ncol(C)] * 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 18:42:13