R代码:包含要递增的列号的列表

R Code: List containing column numbers to increment

我有一个包含列号的列表:

list = list(c(1,4,5),c(2,4,2))
matrix = matrix(rep(0,10),ncol=5)

> list
[[1]]
[1] 1 4 5

[[2]]
[1] 2 4 2


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

我想要实现的是:

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

但是因为我的列表很大,矩阵也很大,所以循环遍历不满足:

for (i in 1:length(list)) matrix[i,list[[i]]] = 1

我们可以尝试 sparseMatrixlibrary(Matrix)

library(Matrix)
sM <- sparseMatrix(i= rep(seq_along(list), lengths(list)), 
                    j= unlist(list),
                    x= 1)
as.matrix(sM)

不确定在同一 list 元素中重复的列号是否有拼写错误。如果不是错字,还是要二进制输出

+(!!(as.matrix(sM)))
#     [,1] [,2] [,3] [,4] [,5]
#[1,]    1    0    0    1    1
#[2,]    0    1    0    1    0