R中的poLCA.table循环(poLCA包)

时间:2015-12-31 23:20:47

标签: r loops

在R的poLCA包中我使用poLCA.table根据估计的潜类模型计算预测的单元格频率。

我需要对潜在类模型中的所有变量组合使用poLCA.table

data(carcinoma)
f <- cbind(A, B, C, D, E, F, G) ~ 1
lca2 <- poLCA(f, carcinoma, nclass = 2)
poLCA.table(formula = A ~ B, condition = list(), lc = lca2)

例如,我需要从G的所有组合到A。

如何自动制作?

1 个答案:

答案 0 :(得分:2)

此循环创建强制转换为单独公式对象的字母的双向组合,然后将它们中的每一个传递给您指定的函数:

 lapply( apply(combn(LETTERS[1:5],2), 2, 
                  function(col) as.formula( paste(col[1], "~", col[2])  ) ),
         function(x) poLCA.table(formula =x, condition = list(), lc = lca2)
       )
#------------------
[[1]]
          B 1      B 2
A 1 33.572932 18.42707
A 2  5.427068 60.57293

[[2]]
    C 1          C 2
A 1  52 2.551164e-10
A 2  21 4.500000e+01

[[3]]
    D 1          D 2
A 1  52 1.814161e-10
A 2  34 3.200000e+01

[[4]]
          E 1      E 2
A 1 40.408128 11.59187
A 2  6.591872 59.40813

[[5]]
         C 1        C 2
B 1 38.23913  0.7608669
B 2 34.76087 44.2391331

[[6]]
         D 1        D 2
B 1 38.45894  0.5410609
B 2 47.54106 31.4589391

[[7]]
         E 1      E 2
B 1 29.55038  9.44962
B 2 17.44962 61.55038

[[8]]
         D 1       D 2
C 1 65.34774  7.652258
C 2 20.65226 24.347742

[[9]]
           E 1      E 2
C 1 46.0386552 26.96134
C 2  0.9613448 44.03866

[[10]]
          E 1      E 2
D 1 46.316377 39.68362
D 2  0.683623 31.31638