如何通过R中的矩阵从向量列表中提取向量

  • 本文关键字:向量 列表 提取 何通过 r
  • 更新时间 :
  • 英文 :


问题:

我有很多矢量。我想对从1n的这些向量进行数字签名。然后,我想把这些数字转换成lower.triangular矩阵。之后,我想提取矩阵最后一行的向量。

问题的步骤:

  1. 1n的符号数n向量。

  2. 将这些数字转换为lower.triangular矩阵M.

  3. 然后,提取与矩阵M最后一行的数字匹配的向量。

示例:

假设我有一个10矢量列表(X(:

X <- list(x1=c(1:3), x2=(2:5), x3=c(4:2), x4=c(5:7), x5=c(12,34,54), x6=c(3:6), x7=c(3:6), x8=c(3,4,5), x9=c(44,56,7), x10=c(34,5,4))

然后,我想把它们从1排序到10,其中1指的是第一个向量,依此类推。然后,我会有一个这些数字的向量,比如x = c(1:10)。然后,我想把它转换成一个下三角矩阵M

 M <- matrix(0,5,5)
> M[lower.tri(M, diag=FALSE)] <- x
> M
     [,1] [,2] [,3] [,4] [,5]
[1,]    0    0    0    0    0
[2,]    1    0    0    0    0
[3,]    2    5    0    0    0
[4,]    3    6    8    0    0
[5,]    4    7    9   10    0

现在,我想提取最后一行。

> tail(M, 1)
     [,1] [,2] [,3] [,4] [,5]
[5,]    4    7    9   10    0
> newX <- as.vector(tail(M,1))
> newX
[1]  4  7  9 10  0

现在想要的矢量(要从整个矢量中提取(是4、7、9和10。换句话说,我需要提取x4, x7, x9, and x10

因此,我想提取与这些数字匹配的向量。

有什么想法或帮助吗?

您可以使用paste:

X[paste0("x", newX[newX != 0])]
$`x4`
[1] 5 6 7
$x7
[1] 3 4 5 6
$x9
[1] 44 56  7
$x10
[1] 34  5  4

paste0("x", newX[newX != 0]将创建字符向量"x4", "x7", "x9", "x10",您可以使用该向量对列表进行索引。

最新更新