r中列表中的model.matrix

时间:2015-05-24 19:06:00

标签: r model.matrix

我正在尝试将因子列表转换为矩阵,例如:

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

对此有任何帮助表示赞赏。

2 个答案:

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