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))))