Отображение нескольких таблиц DT в R Viewer - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть две таблицы DT, которые имеют одинаковое количество столбцов / строк. Я хотел бы отобразить их оба в R Viewer ниже друг друга. Я пытался использовать печать, но он просто создает два разных представления.

Я пытался использовать browsable из пакета htmlTools, который, я думаю, работает нормально. Однако это делает две таблицы перекрывающимися, а скроллер справа перекрывается с таблицей. Просто интересно, есть ли способ установки полей? Я попытался добавить в опцию стиля, но она не работает. Любая помощь будет высоко ценится!

library(DT)
library(htmltools)

t1<-data.frame(matrix(data = round(rnorm(285), 3), nrow=15, ncol=19,
                      dimnames = list(NULL,seq(from=0, to=0.9, by=0.05))), check.names=FALSE)

t2<-data.frame(matrix(data = round(rnorm(285), 3), nrow=15, ncol=19,
                      dimnames = list(NULL,seq(from=0, to=0.9, by=0.05))), check.names=FALSE)

dt_t1 <- datatable(t1,
                      caption = paste0("Variable tested: "),
                      rownames=TRUE,
                     fillContainer = F,
                      options =list(pageLength = 20,
                                    dom = "t", 
                                    ordering = F,
                                    autoWidth = TRUE,
                                    initComplete = htmlwidgets::JS(
                                     "function(settings, json) {",
                                    paste0("$(this.api().table().container()).css({'font-size': '", "9pt", "'});"),
                                    "}"),
                                    columnDefs = list(list(width = '30px', targets = 0), list(width = '10px', targets = c(1,2)))
                                    )
                                   )


dt_t2 <- datatable(t1,
                   caption = paste0("Variable tested: "),
                   rownames=TRUE,
                   fillContainer = F,
                   options =list(pageLength = 20,
                                 dom = "t", 
                                 ordering = F,
                                 autoWidth = TRUE,
                                 initComplete = htmlwidgets::JS(
                                   "function(settings, json) {",
                                   paste0("$(this.api().table().container()).css({'font-size': '", "9pt", "'});"),
                                   "}"),
                                 columnDefs = list(list(width = '30px', targets = 0), list(width = '10px', targets = c(1,2)))
                   ))



browsable(
  tagList(list(
    tags$div(
      style = 'display:block; float:top; margin-right:30px;',
      dt_t1
    ),
    tags$div(
      style = 'display:block;float:top; margin-right:30px; margin-top:0px;',
      dt_t2))))

1 Ответ

0 голосов
/ 05 февраля 2020

Теоретически в пакете manipulateWidget есть combineWidgets:

library(manipulateWidget)
library(DT)

combineWidgets(
  datatable(iris[1:5,]),
  datatable(iris[1:5,]),
  ncol = 2, colsize = c(1,1)
)

Но странно, что это не работает: это приводит к пустому окну.

Однако это работает если вы инкапсулируете в manipulateWidget:

manipulateWidget({
  combineWidgets(title = "The iris data set", 
                 ncol = 2, colsize = c(1,1),
                 datatable(iris),
                 datatable(iris))
}, select = mwSelect(1:3))
...