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

如何在R语言中为矩阵每行元素加上对应最后一列的数值?

解决方案:矩阵每行添加对应行最后一列的值

问题回顾

给定矩阵:

tt <- matrix(1:9, 3, 3)

目标是将每行最后一列的数值加到该行所有元素上,得到结果:

matrix(c(8,11,14,10,13,16,12,15,18), ncol = 3, byrow = TRUE)

可行的非循环/Apply类方法

1. 利用R的矩阵广播特性(最简洁)

R会自动将列向量广播为与原矩阵同维度的矩阵,直接相加即可:

tt + tt[, 3, drop = FALSE]
  • tt[,3,drop=FALSE] 确保最后一列保持列向量形式(3行1列),而非转为一维向量,这样才能正确广播到每行。

2. 使用apply函数按行处理

通过apply遍历每行,为每行加上该行的最后一列值,最后转置恢复矩阵结构:

t(apply(tt, 1, function(row) row + row[3]))
  • apply(tt,1, ...) 按行处理矩阵,返回结果是列优先的矩阵,因此用t()转置得到正确的行结构。

3. 使用sweep函数(专门的维度操作工具)

sweep可以指定按行/列维度,将对应的值与矩阵元素进行运算:

sweep(tt, 1, tt[,3], `+`)
  • 参数说明:1表示按行操作,tt[,3]是每行要添加的数值,+是执行的运算。

原lapply代码失败原因

lapply会将矩阵拆解为一维向量逐个元素处理,而非按行操作,且参数传递错误,因此无法实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:20:41