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

如何从R语言数据框中提取特定对角线65、90、55?

提取矩阵的反对角线元素(R语言)

嘿,你遇到的这个问题其实很典型——你想要的是矩阵的反对角线(从右上到左下的那条线)元素,而R自带的diag()函数默认只提取主对角线(左上到右下)的元素,所以才会得到30、90、NA的结果。下面给你两个简单好用的解决方法:

方法一:反转列后提取主对角线

我们可以先把矩阵的列从右到左反转,这样原来的反对角线就变成了新矩阵的主对角线,再用diag()就能轻松拿到目标元素:

# 反转矩阵的列,再提取对角线
diag(mydata[, ncol(mydata):1])

运行这段代码后,你会得到:

[1] 65 90 55

方法二:手动构建索引提取

反对角线的元素有个规律:对于n列的矩阵,第i行的反对角线元素位于第n - i + 1列。我们可以利用这个规律直接构建索引来提取:

n <- ncol(mydata)
mydata[cbind(1:n, n:1)]

这段代码会生成反对角线元素的坐标对(比如(1,3)、(2,2)、(3,1)),直接用这些索引就能精准提取你想要的元素,结果和方法一完全一致。

额外说明

这两种方法不仅适用于方阵,就算你的矩阵是长方形的,也能提取出最长的那条反对角线元素,实用性很强~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:25:51