从列表中创建具有不同长度的元素的矩阵

时间:2015-02-12 12:00:19

标签: r

我是R.的新手。我正在使用 mirt 包进行多元数据分析。

我正在对以下样本数据进行校准。前5项(v1至v5)有3个类别,而最后5项(v21到v25)有4个类别。

library(mirt)
r_data
   V1 V2 V3 V4 V5 V21 V22 V23 V24 V25
1   1  1  1  0  0   1   2   3   2   1
2   2  1  0  0  0   3   2   1   1   0
3   1  1  1  1  1   1   0   1   1   1
4   1  1  0  0  1   1   2   1   1   1
5   1  0  1  2  0   2   2   1   3   1
6   1  0  2  2  1   2   2   2   3   0
7   0  0  0  1  0   1   3   2   0   3
8   2  0  0  1  2   2   1   1   0   2
9   1  2  1  2  0   2   0   0   1   1
10  1  0  1  0  2   0   1   3   1   3
11  1  1  2  1  2   1   0   1   2   0
12  1  1  1  1  0   2   0   1   1   2
13  1  2  1  0  1   1   1   3   1   1
14  0  2  0  1  2   2   2   2   0   1
15  0  1  0  1  2   2   1   1   3   1
16  0  0  0  1  1   0   2   1   3   2
17  1  1  0  1  1   0   3   3   1   0
18  0  1  1  1  0   1   1   1   3   2
19  0  0  1  2  0   1   1   2   2   2
20  1  1  2  0  0   1   2   0   1   3

我申请了

pars.1=mirt(r_data, 2, 'gpcm')
    Iteration: 380, Log-Lik: -214.027, Max-Change: 0.00009
    coef(pars.1)

得到了

$V1
       a1     a2 ak0 ak1 ak2 d0    d1     d2
par -0.95 -1.049   0   1   2  0 1.101 -1.639

$V2
       a1     a2 ak0 ak1 ak2 d0    d1     d2
par -0.44 -0.576   0   1   2  0 0.493 -1.014

$V3
        a1    a2 ak0 ak1 ak2 d0    d1     d2
par -0.001 0.376   0   1   2  0 0.152 -1.047

$V4
        a1    a2 ak0 ak1 ak2 d0    d1     d2
par -0.834 2.405   0   1   2  0 1.652 -0.946

$V5
       a1     a2 ak0 ak1 ak2 d0     d1    d2
par 0.188 -0.225   0   1   2  0 -0.381 -0.62

$V21
        a1    a2 ak0 ak1 ak2 ak3 d0    d1    d2     d3
par -7.165 0.044   0   1   2   3  0 7.688 5.842 -6.525

$V22
      a1     a2 ak0 ak1 ak2 ak3 d0    d1    d2     d3
par 0.26 -0.133   0   1   2   3  0 0.478 0.759 -0.716

$V23
       a1     a2 ak0 ak1 ak2 ak3 d0   d1    d2    d3
par 0.639 -0.302   0   1   2   3  0 1.99 1.077 0.691

$V24
       a1    a2 ak0 ak1 ak2 ak3 d0    d1    d2    d3
par 0.122 0.828   0   1   2   3  0 1.573 0.471 0.505

$V25
       a1 a2 ak0 ak1 ak2 ak3 d0    d1    d2     d3
par 0.459  0   0   1   2   3  0 0.847 0.349 -0.369

$GroupPars
    MEAN_1 MEAN_2 COV_11 COV_21 COV_22
par      0      0      1      0      1

此列表coef(pars.1)我需要将列名称转换为矩阵作为参数a1,a2,ak0,ak1,ak2,ak3,d0,d1,d2,d3。

我该怎么做?

P.S。

   t(sapply(coef(pars.1)[1:ncol(r_data)], '[', 1:max(sapply(coef(pars.1)[1:ncol(r_data)], length))))

上面的代码无效,因为参数值变得​​混杂。

提前谢谢。

0 个答案:

没有答案