У меня есть список векторов символов:
set.seed(1)
sets.list <- list(s1 = paste0("id",sample(1:10,3,replace=F)),
s2 = paste0("id",sample(1:10,4,replace=F)),
s3 = paste0("id",sample(1:10,4,replace=F)))
И я хотел бы создать integer
matrix
, где столбцы - это уникальные значения по sets.list
(sets.ids <- unique(unlist(sets.list))
) строки - это элементы sets.list
, а значения являются двоичными индикаторами того, является ли значение членом элемента sets.list
(1) или нет (0).
в настоящее время генерирует это matrix
:
sets.mat <- do.call(rbind,lapply(sets.list, function(s){
set.row <- rep(0,length(sets.ids))
set.row[which(sets.ids %in% s)] <- 1
return(set.row)
}))
colnames(sets.mat) <- sets.ids
Мой вопрос: есть ли что-нибудь более краткое с точки зрения кода (возможно, что-то, использующее tidyverse
)