[英]How to extract a vector from a list of vectors via matrix in R
我有很多向量。 我想对从1
到n
向量进行数字签名。 然后,我想将这些数字转换为下lower.triangular
矩阵。 在那之后,我想提取向量到矩阵的最后一行。
符号编号从1
到n
n
向量。
将这些数字转换为下lower.triangular
矩阵M。
然后,提取与矩阵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
现在所需的向量(要从整个向量中提取)是x4, x7, x9, and x10
和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"
,可用于为列表建立索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.