【问题标题】:How to do this matrix"operation" in R?如何在 R 中做这个矩阵“操作”?
【发布时间】:2020-12-22 00:02:08
【问题描述】:

所以我有这个对角矩阵

> M
   a  b  c  d
 a 2  3  5  4
 b .  3  6  4
 c .  .  4  6
 d .  .  .  3
 > 

我想做的是以下,我想访问以下元素: (a,a), (a,b), (a,c), (a,d)。这很容易,它只是第一行。

但我也需要

(b,a), (b,b), (b,c), (b,d)。将是 (3,3,6,4)

(c,a), (c,b), (c,c), (c,d)。将是 (5,6,4,6)

(d,a), (d,b), (d,c), (d,d)。将是 (4,4,6,3)

我怎样才能访问这些?我想在每种情况下使用这些元素返回一个行或列向量。 我在这里尝试的是手动复制这些元素,但我真的很想在矩阵较大的情况下如何做到这一点?

【问题讨论】:

  • apply( matrix, 1, function(x) x ) 做你想做的事吗?

标签: r matrix linear-algebra


【解决方案1】:

如果你想要行向量

asplit(M,1)

或列向量

asplit(M,2)

向量存储在列表中的位置。


更新

M[lower.tri(M)] <- t(M)[lower.tri(M)]
res <- asplit(M,1)

这样

> res
[[1]]
[1] 2 3 5 4

[[2]]
[1] 3 3 6 4

[[3]]
[1] 5 6 4 6

[[4]]
[1] 4 4 6 3

数据

> dput(M)
structure(c(2, NA, NA, NA, 3, 3, NA, NA, 5, 6, 4, NA, 4, 4, 6, 
3), .Dim = c(4L, 4L))

【讨论】:

  • 谢谢你很有用!但不幸的是,这并不能解决我的问题。我想我在我的OP中不是很清楚。我现在对其进行了编辑,并更好地描述了我真正想要的内容
猜你喜欢
  • 1970-01-01
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2020-02-04
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多