model.matrix из списков в r

Я пытаюсь преобразовать список факторов в матрицу, например:

myLists:

    [[1]]
    [1] "RA"   "FZFG" "BR"  
    [[2]]
    [1] "RA"
    [[3]]
    [1] ""
    [[4]]
    [1] ""

в

RA  FZFG  BR
1    1    1
1    0    0
0    0    0
0    0    0

Я пытался сделать следующее:

allFactors<-c("RA","FZFG","BR")
mat<-model.matrix(~allFactors,  data =myLists)

но есть эта ошибка:

Ошибка в data.frame(c("RA", "FZFG", "BR"), "RA", "", "", "", "", c("RA",: аргументы подразумевают различное количество строк): 3, 1, 2, 4, 5, 7, 6, 8, 9

Любая помощь по этому вопросу приветствуется.

2 ответа

Решение

Один вариант

library(qdapTools)
mtabulate(myLists)[-1]

Или используя base R

 table(stack(setNames(myLists, seq_along(myLists)))[2:1])[,-1]

База R опция:

level = unique(unlist(lst))
do.call(rbind, lapply(lst, function(u) table(factor(u, levels=level))))
Другие вопросы по тегам