Избегайте разрывов строки после дефиса в R Shiny - PullRequest
0 голосов
/ 04 июля 2019

Кажется, что Shiny автоматически вводит разрыв строки после символов дефиса (-), по крайней мере, когда используется вместе с таблицами данных (см. Пример ниже). Я предполагаю, что это связано с подобной проблемой в HTML и, вероятно, происходит, когда документ отображается в HTML, но здесь замена дефиса на «неразрывную» версию (‑) не будет не работает и замена дефиса длинной версией ().

Вот пример кода, воспроизводящего эту проблему, где я создаю переменную со знаком минус в ее имени и хочу показать ее имя (включая знак минус) в заголовке таблицы. Как видите, после - появляется разрыв строки.

---
title: "Example"
runtime: shiny
theme: simplex
vertical_layout: fill
output:
  flexdashboard::flex_dashboard:
  orientation: rows
---

Explore
======================================================================

```{r echo = FALSE}
library("tidyverse")
library("shiny")
library("DT")
```

```{r echo = FALSE}
createDataTable <- function (data) {

  data %>%  

    DT::datatable(
      extensions = c('Buttons','Scroller'),
      rownames=FALSE,
      options = list(
        paging = TRUE,
        pageLength = nrow(data),
        searching = TRUE,
        fixedColumns = TRUE,
        autoWidth = FALSE,
        ordering = TRUE,
        scroller = TRUE,
        scrollX = '400px',
        scrollY = '300px',
        dom = 'Bfrtip',
        buttons = list(
          'copy',
          list(
            extend='collection',
            buttons = list (
              list(extend='csv', filename='catalog'),
              list(extend='excel', filename='catalog'),
              list(extend='pdf', filename='catalog')
            ),
            text='Download'),
          'print'
        )
      )
    )
}
```

```{r echo = FALSE}
DT::renderDataTable(
  server=FALSE, {
  mtcars %>% dplyr::mutate(`-mpg` = -mpg, a_longer_name_for_mpg = mpg) %>% createDataTable()
})

```

Кто-нибудь знает, как избежать такого поведения, не меняя используемые функции DT и не отказываясь включать дефис в заголовок столбца?

EDIT

Похоже, что при просмотре страницы в полноэкранном режиме разрыв страницы отсутствует. Но это не имеет ничего общего с длиной имени переменной (код обновляется также для создания новой переменной с более длинным именем). Поэтому должен быть способ избежать такого поведения независимо от размера экрана.

Это мой sessionInfo():

R version 3.6.0 (2019-04-26)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Arch Linux

Matrix products: default
BLAS:   /usr/lib/libblas.so.3.8.0
LAPACK: /usr/lib/liblapack.so.3.8.0

locale:
 [1] LC_CTYPE=es_ES.UTF-8       LC_NUMERIC=C               LC_TIME=es_ES.UTF-8        LC_COLLATE=es_ES.UTF-8    
 [5] LC_MONETARY=es_ES.UTF-8    LC_MESSAGES=es_ES.UTF-8    LC_PAPER=es_ES.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=es_ES.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] compiler_3.6.0        rsconnect_0.8.13      htmltools_0.3.6       tools_3.6.0           flexdashboard_0.5.1.1
 [6] yaml_2.2.0            Rcpp_1.0.1            rmarkdown_1.13        knitr_1.23            jsonlite_1.6         
[11] xfun_0.7              digest_0.6.19         evaluate_0.13    

1 Ответ

1 голос
/ 04 июля 2019

Вы можете отключить перенос, используя класс nowrap:

DT::datatable(
  class = "display nowrap",
  extensions = c('Buttons','Scroller'),
  ......
...