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

如何理解R语言apply函数的轴编号逻辑?

关于R中apply函数轴编号逻辑的理解

先创建示例矩阵:

mymatrix <- matrix(1:9, nrow=3)
mymatrix

输出:

[,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

执行按行、按列求和操作:

apply(mymatrix, 1, sum)

结果:

[1] 12 15 18
apply(mymatrix, 2, sum)

结果:

[1]  6 15 24

不少人会直觉上觉得行是矩阵的第一维度,对轴1用sum应该得到列求和结果,但实际刚好相反,下面说清楚这个设计逻辑:

  • R的矩阵是列优先存储的:数据在内存里是先存第一列的所有元素,再存第二列,以此类推,这种底层存储方式影响了维度的逻辑定义。
  • apply的第二个参数MARGIN(轴编号),核心是指定要保留的维度,而非要计算的维度:
    • 设MARGIN=1,意思是保留行维度,对每一行的所有元素执行函数——也就是按行计算,结果长度等于行数;
    • 设MARGIN=2,意思是保留列维度,对每一列的所有元素执行函数——也就是按列计算,结果长度等于列数。
  • 换个通俗说法:MARGIN=1就是“一行一行过”,把每一行的元素凑起来算;MARGIN=2就是“一列一列过”,把每一列的元素凑起来算。

不用纠结“行是不是第一维度”,直接记死规则:MARGIN=1处理行,MARGIN=2处理列,这是R基于自身存储逻辑定下的标准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:57:10