gpt4 book ai didi

R:二进制矩阵的索引列表

转载 作者:行者123 更新时间:2023-12-04 09:41:01 26 4
gpt4 key购买 nike

假设我有一个索引列表,例如:

l <- list(c(1,2,3), c(1), c(1,5), c(2, 3, 5))

其中指定矩阵中的非零元素,例如:
(m <- matrix(c(1,1,1,0,0, 1,0,0,0,0, 1,0,0,0,5, 0,1,1,0,1), nrow=4, byrow=TRUE))

[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 1 0 0
[2,] 1 0 0 0 0
[3,] 1 0 0 0 5
[4,] 0 1 1 0 1

使用 R 制作 m 的最快方法是什么?来自 l ,假设矩阵非常大,比如说 50.000 行和 2000 列?

最佳答案

尝试

d1 <- stack(setNames(l, seq_along(l)))
library(Matrix)
m1 <- sparseMatrix(as.numeric(d1[,2]), d1[,1], x=1)
as.matrix(m1)
# [,1] [,2] [,3] [,4] [,5]
#[1,] 1 1 1 0 0
#[2,] 1 0 0 0 0
#[3,] 1 0 0 0 1
#[4,] 0 1 1 0 1

或者代替 stack ,我们可以使用 melt
library(reshape2)
d2 <- melt(l)
sparseMatrix(d2[,2], d2[,1],x=1)

或仅使用 base R
Un1 <- unlist(l)
m1 <- matrix(0, nrow=length(l), ncol=max(Un1))
m1[cbind(as.numeric(d1$ind), d1$values)] <- 1
m1

关于R:二进制矩阵的索引列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31246008/

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