我正在尝试将因子列表转换为矩阵,例如:
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(&#34; RA&#34;,&#34; FZFG&#34;,&#34; BR&#34;),&#34; RA&#34;,&# 34;&#34;,&#34;&#34;,&#34;&#34;,&#34;&#34;, c(&#34; RA&#34;,:参数意味着不同的行数:3,1,2,4,5, 7,6,8,9
对此有任何帮助表示赞赏。
答案 0 :(得分:4)
一个选项是
library(qdapTools)
mtabulate(myLists)[-1]
或使用base R
table(stack(setNames(myLists, seq_along(myLists)))[2:1])[,-1]
答案 1 :(得分:3)
基础R
选项:
level = unique(unlist(lst))
do.call(rbind, lapply(lst, function(u) table(factor(u, levels=level))))