【发布时间】:2019-08-20 19:29:50
【问题描述】:
我有一个所有不同维度的矩阵列表。我想取一个存在于最后一行、倒数第二列的值,并将该值复制到矩阵的右下角。
矩阵列表如下所示:
> matrix.list
$`1`
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 0 0 0 0 0.0000000 0 0.000000 0.0000000 4.52
[2,] 1 0 0 0 0.0000000 0 0.000000 0.0000000 0.00
[3,] 0 1 0 0 0.0000000 0 0.000000 0.0000000 0.00
[4,] 0 0 1 0 0.0000000 0 0.000000 0.0000000 0.00
[5,] 0 0 0 1 0.0000000 0 0.000000 0.0000000 0.00
[6,] 0 0 0 0 0.9733333 0 0.000000 0.0000000 0.00
[7,] 0 0 0 0 0.0000000 1 0.000000 0.0000000 0.00
[8,] 0 0 0 0 0.0000000 0 0.902029 0.0000000 0.00
[9,] 0 0 0 0 0.0000000 0 0.000000 0.9733333 0.00
$`2`
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 0 0 0 0 0.00 0 0.000 6.5
[2,] 1 0 0 0 0.00 0 0.000 0.0
[3,] 0 1 0 0 0.00 0 0.000 0.0
[4,] 0 0 1 0 0.00 0 0.000 0.0
[5,] 0 0 0 1 0.00 0 0.000 0.0
[6,] 0 0 0 0 0.96 0 0.000 0.0
[7,] 0 0 0 0 0.00 1 0.000 0.0
[8,] 0 0 0 0 0.00 0 0.905 0.0
$`3`
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 0 0 0 0 0.0000000 0 4.82
[2,] 1 0 0 0 0.0000000 0 0.00
[3,] 0 1 0 0 0.0000000 0 0.00
[4,] 0 0 1 0 0.0000000 0 0.00
[5,] 0 0 0 1 0.0000000 0 0.00
[6,] 0 0 0 0 0.9866667 0 0.00
[7,] 0 0 0 0 0.0000000 1 0.00
我想把它改成这样:
> matrix.list
$`1`
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 0 0 0 0 0.0000000 0 0.000000 0.0000000 4.5200000
[2,] 1 0 0 0 0.0000000 0 0.000000 0.0000000 0.0000000
[3,] 0 1 0 0 0.0000000 0 0.000000 0.0000000 0.0000000
[4,] 0 0 1 0 0.0000000 0 0.000000 0.0000000 0.0000000
[5,] 0 0 0 1 0.0000000 0 0.000000 0.0000000 0.0000000
[6,] 0 0 0 0 0.9733333 0 0.000000 0.0000000 0.0000000
[7,] 0 0 0 0 0.0000000 1 0.000000 0.0000000 0.0000000
[8,] 0 0 0 0 0.0000000 0 0.902029 0.0000000 0.0000000
[9,] 0 0 0 0 0.0000000 0 0.000000 0.9733333 0.9733333
$`2`
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 0 0 0 0 0.00 0 0.000 6.500
[2,] 1 0 0 0 0.00 0 0.000 0.000
[3,] 0 1 0 0 0.00 0 0.000 0.000
[4,] 0 0 1 0 0.00 0 0.000 0.000
[5,] 0 0 0 1 0.00 0 0.000 0.000
[6,] 0 0 0 0 0.96 0 0.000 0.000
[7,] 0 0 0 0 0.00 1 0.000 0.000
[8,] 0 0 0 0 0.00 0 0.905 0.905
$`3`
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 0 0 0 0 0.0000000 0 4.82
[2,] 1 0 0 0 0.0000000 0 0.00
[3,] 0 1 0 0 0.0000000 0 0.00
[4,] 0 0 1 0 0.0000000 0 0.00
[5,] 0 0 0 1 0.0000000 0 0.00
[6,] 0 0 0 0 0.9866667 0 0.00
[7,] 0 0 0 0 0.0000000 1 1.00
我尝试在感兴趣的位置提取值:
data.list2 <- lapply(data.list, function(x) x[nrow(x),ncol(x)-1])
但我收到许多人遇到的关于尺寸不正确的错误:
Error in x[nrow(x), ncol(x) - 1] : incorrect number of dimensions
有没有办法索引某个位置,然后将其复制到矩阵列表中的相同位置?类似于dplyr::nth 命令但用于矩阵?
【问题讨论】: