gpt4 book ai didi

R:如何将由行索引列表表示的稀疏二进制矩阵转换为列索引列表

转载 作者:行者123 更新时间:2023-12-01 22:57:38 24 4
gpt4 key购买 nike

假设我有一个稀疏的 m x n 二进制矩阵,并且我已经使用行索引列表来表示这些矩阵。比如下面的3×3矩阵

     [,1] [,2] [,3]
[1,] 1 1 0
[2,] 0 1 0
[3,] 0 0 1

由列表 M_row 表示:

> M_row
[[1]]
[1] 1 2

[[2]]
[1] 2

[[3]]
[1] 3

这里列表中的第 i 个元素对应于第 i 行中的位置。我想将此列表转换为列索引列表,其中新列表中的第 j 个元素对应于第 j 列中元素的(行)位置。对于前面的例子,我想要:

> M_col
[[1]]
[1] 1

[[2]]
[1] 1 2

[[3]]
[1] 3

有没有一种不用写很多循环就能做到这一点的有效方法?

最佳答案

试试这个

M_row <- list(1:2 , 2, 3) # this is the beginning list

#----------------------------------
m <- matrix(0 , length(M_row) , length(M_row))

for(i in 1:nrow(m)) {
m[ i , M_row[[i]]] <- 1
}
M_col <- apply(m , 2 , \(x) which(x == 1))

#----------------------------------
M_col # this is the required list
#> [[1]]
#> [1] 1
#>
#> [[2]]
#> [1] 1 2
#>
#> [[3]]
#> [1] 3

关于R:如何将由行索引列表表示的稀疏二进制矩阵转换为列索引列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72673524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com