Eu tenho uma lista de vetores de tamanho livre
set.seed(1)
dat <- lapply(1:10, \(x) sample(letters, size = sample(1:10,1), replace = T))
dat
[[1]]
[1] "d" "g" "a" "b" "w" "k" "n" "r" "s"
[[2]]
[1] "u"
[[3]]
[1] "j" "v" "n" "j" "g"
[[4]]
[1] "o" "u" "e" "i" "y" "n" "e" "e" "b"
[[5]]
[1] "y" "l" "o" "a" "t" "c" "f" "j" "j" "f"
Quais são algumas maneiras de fazer uma matriz densa como esta, mas de forma mais eficiente? Também gostaria de salvar os nomes das colunas como no exemplo
library(arules)
as(transactions(dat), "matrix")
a b c d e f g h i j k l m
[1,] TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE
[2,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[3,] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE
[4,] FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
[5,] TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE TRUE FALSE
[6,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
[7,] FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE TRUE FALSE
[8,] FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE TRUE FALSE FALSE FALSE
[9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
[10,] TRUE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
n o r s t u v w x y z
[1,] TRUE FALSE TRUE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
[2,] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
[3,] TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
[4,] TRUE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE
[5,] FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE
[6,] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE
[7,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE
[8,] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE TRUE
[9,] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[10,] TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Este é um exemplo do pacote аrules e não está otimizado para meus propósitos
Podes tentar
que dá uma mesa
stack
Uma versão mais curta (e pode ser mais eficiente que minha abordagem anterior ) éUm pouco mais rápido e com mais eficiência de memória do que a boa solução de @ThomasIsCoding:
Um benchmark rápido com 100 vetores:
Outra opção:
Referência: