R: латексный стол с несколькими столбцами и несколькими рядами - PullRequest
0 голосов
/ 06 октября 2019

Я хотел бы сгенерировать латексную таблицу кода, используя R.

Это пример ожидаемой таблицы: enter image description here

Мой вопрос: Как создать эту многорядную строку с Methods, а эту многоколонную с помощью GROUP 1, GROUPE 2, A, B, C ..., (l = 0), ..., CONDITION 0. ... используя R?

И есть ли способ добавить cmidrule с R?

Мои данные выглядят так:

z1 <- c(8.00,5.36,2.55,0.49,90.29,0.70,0.01,15.34,0.74,0.02,97.27,0.54,
        0.92,29.78,0.54,3.44,21.56,4.62,3.80,92.53,6.76,0.65,7.82)
z2 <- c(3.00,57.56,4.55,0.52,18.95,6.52,0.01,9.79,0.69,0.01,88.50,4.94,
        0.33,17.33,30.48,0.42,89.50,3.58,0.52,99.63,9.78,0.65,7.90)
z3 <- c(9.00,28.32,3.46,0.65,11.74,8.41,0.01, 7.86,6.91,0.92, 9.49,3.23,
        0.42,12.82,0.35,0.90,13.07,4.47,0.62, 6.74,9.74,9.77,3.88)
z4 <- c(9.00,32.01,0.43,0.62,11.79,6.46,1.02, 8.74,4.53,0.02, 9.80,0.38,
        0.47,14.56,0.39,0.50,14.04,3.50,0.61, 6.95,0.78,0.77,4.01)
z5 <- c(1.00,53.73,4.54,4.46,62.63,1.67,1.01,92.97,3.69,0.01,86.04,1.48,
        2.39,99.92,0.51,0.40,21.60,1.61,0.50,91.85,0.84,0.69,6.83)

tab <- data.frame(Methods =  c(rep(c("val 0", "cond 1", "val 1", "cond 2", "val 2", "val 3", "val 4"),8)),
colFactor1 = c(rep("GROUP 1",14) ,rep("GROUP 2",42)),
colFactor2 = c(rep("A",7), rep("B",7), rep("C",7), rep("D",7), 
               rep("E",7), rep("F",7), rep("G",7) ,rep("H",7)),
colFactor3 = c(rep("(l = 0)",7), rep("(l = 4)",7), rep("(l = 1)",7), rep("(l = 2)",7), 
               rep("(l = 1)",7), rep("(l = 2)",7), rep("(l = 2)",7), rep("(l = 2)",7)),
colFactor4 = c(rep(" ",7), rep("CONDITION 0",7), rep("CONDITION 1",14), rep("CONDITION 2",28)),
  x = c(c(paste0(format(z1[1],nsmall=2),'/-' ,' (',format(z1[2],nsmall=2),')'), paste0(" "), 
          paste0(format(z2[1],nsmall=2),'/-' ,' (',format(z2[2],nsmall=2),')'), paste0(" "),
          paste0(format(z3[1],nsmall=2),'/-' ,' (',format(z3[2],nsmall=2),')'),
          paste0(format(z4[1],nsmall=2),'/-' ,' (',format(z4[2],nsmall=2),')'),
          paste0(format(z5[1],nsmall=2),'/-' ,' (',format(z5[3],nsmall=2),')')),

        c(paste0(format(z1[3],nsmall=2),'/',format(z1[4],nsmall=2) ,' (',format(z1[5],nsmall=2),')'), paste0(" "), 
          paste0(format(z2[3],nsmall=2),'/',format(z2[4],nsmall=2) ,' (',format(z2[5],nsmall=2),')'), paste0(" "),
          paste0(format(z3[3],nsmall=2),'/',format(z3[4],nsmall=2) ,' (',format(z3[5],nsmall=2),')'),
          paste0(format(z4[3],nsmall=2),'/',format(z4[4],nsmall=2) ,' (',format(z4[5],nsmall=2),')'),
          paste0(format(z5[3],nsmall=2),'/',format(z5[4],nsmall=2) ,' (',format(z5[5],nsmall=2),')')),

        c(paste0(format(z1[6],nsmall=2),'/',format(z1[7],nsmall=2) ,' (',format(z1[8],nsmall=2),')'), paste0(" "), 
          paste0(format(z2[6],nsmall=2),'/',format(z2[7],nsmall=2) ,' (',format(z2[8],nsmall=2),')'), paste0(" "),
          paste0(format(z3[6],nsmall=2),'/',format(z3[7],nsmall=2) ,' (',format(z3[8],nsmall=2),')'),
          paste0(format(z4[6],nsmall=2),'/',format(z4[7],nsmall=2) ,' (',format(z4[8],nsmall=2),')'), 
          paste0(format(z5[6],nsmall=2),'/',format(z5[7],nsmall=2) ,' (',format(z5[8],nsmall=2),')')),

        c(paste0(format(z1[9],nsmall=2),'/',format(z1[10],nsmall=2) ,' (',format(z1[11],nsmall=2),')'), paste0(" "), 
          paste0(format(z2[9],nsmall=2),'/',format(z2[10],nsmall=2) ,' (',format(z2[11],nsmall=2),')'), paste0(" "),
          paste0(format(z3[9],nsmall=2),'/',format(z3[10],nsmall=2) ,' (',format(z3[11],nsmall=2),')'),
          paste0(format(z4[9],nsmall=2),'/',format(z4[10],nsmall=2) ,' (',format(z4[11],nsmall=2),')'),
          paste0(format(z5[9],nsmall=2),'/',format(z5[10],nsmall=2) ,' (',format(z5[11],nsmall=2),')')),

        c(paste0(format(z1[12],nsmall=2),'/',format(z1[13],nsmall=2) ,' (',format(z1[14],nsmall=2),')'), paste0(" "), 
          paste0(format(z2[12],nsmall=2),'/',format(z2[13],nsmall=2) ,' (',format(z2[14],nsmall=2),')'), paste0(" "),
          paste0(format(z3[12],nsmall=2),'/',format(z3[13],nsmall=2) ,' (',format(z3[14],nsmall=2),')'),
          paste0(format(z4[12],nsmall=2),'/',format(z4[13],nsmall=2) ,' (',format(z4[14],nsmall=2),')'),
          paste0(format(z5[12],nsmall=2),'/',format(z5[13],nsmall=2) ,' (',format(z5[14],nsmall=2),')')),

        c(paste0(format(z1[15],nsmall=2),'/',format(z1[16],nsmall=2) ,' (',format(z1[17],nsmall=2),')'), paste0(" "), 
          paste0(format(z2[15],nsmall=2),'/',format(z2[16],nsmall=2) ,' (',format(z2[17],nsmall=2),')'), paste0(" "),
          paste0(format(z3[15],nsmall=2),'/',format(z3[16],nsmall=2) ,' (',format(z3[17],nsmall=2),')'),
          paste0(format(z4[15],nsmall=2),'/',format(z4[16],nsmall=2) ,' (',format(z4[17],nsmall=2),')'), 
          paste0(format(z5[15],nsmall=2),'/',format(z5[16],nsmall=2) ,' (',format(z5[17],nsmall=2),')')),

        c(paste0(format(z1[18],nsmall=2),'/',format(z1[19],nsmall=2) ,' (',format(z1[20],nsmall=2),')'), paste0(" "), 
          paste0(format(z2[18],nsmall=2),'/',format(z2[19],nsmall=2) ,' (',format(z2[20],nsmall=2),')'), paste0(" "),
          paste0(format(z3[18],nsmall=2),'/',format(z3[19],nsmall=2) ,' (',format(z3[20],nsmall=2),')'),
          paste0(format(z4[18],nsmall=2),'/',format(z4[19],nsmall=2) ,' (',format(z4[20],nsmall=2),')'), 
          paste0(format(z5[18],nsmall=2),'/',format(z5[19],nsmall=2) ,' (',format(z5[20],nsmall=2),')')),

        c(paste0(format(z1[21],nsmall=2),'/',format(z1[22],nsmall=2) ,' (',format(z1[23],nsmall=2),')'), paste0(" "), 
          paste0(format(z2[21],nsmall=2),'/',format(z2[22],nsmall=2) ,' (',format(z2[23],nsmall=2),')'), paste0(" "),
          paste0(format(z3[21],nsmall=2),'/',format(z3[22],nsmall=2) ,' (',format(z3[23],nsmall=2),')'),
          paste0(format(z4[21],nsmall=2),'/',format(z4[22],nsmall=2) ,' (',format(z4[23],nsmall=2),')'), 
          paste0(format(z5[21],nsmall=2),'/',format(z5[22],nsmall=2) ,' (',format(z5[23],nsmall=2),')')))
)

tab$x <- as.character(tab$x)

Я использовал функцию R "tabular" из пакета "tables", и это моя попытка:

latex(tabular(RowFactor(Methods) ~ 
                colFactor1*colFactor2*colFactor3*colFactor4*Heading()*(x)*Heading()*identity,
              data = tab))

У меня есть стол с NA и warnings()

1: Summary statistic is length 0
2: Summary statistic is length 0 
....
50: Summary statistic is length 0

Большое спасибо за вашу помощь!

...