Избегайте разрывов строк после дефиса в R Shiny

Кажется, что 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 и не отказываясь включать дефис в заголовок столбца?

ИЗМЕНИТЬ

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

Это мой 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    

person elcortegano    schedule 04.07.2019    source источник
comment
не могли бы вы добавить необходимые пакеты и/или среду (уценка...)? Я не очень знаком с таким кодом   -  person bretauv    schedule 04.07.2019
comment
Я отредактировал пост с некоторыми библиотеками, которые могли отсутствовать, а также с результатом sessionInfo()   -  person elcortegano    schedule 04.07.2019
comment
ну, это странно, потому что, когда я открываю окно в полноэкранном режиме, разрыва строки нет (я использую Windows 10), вы пытались открыть его в браузере?   -  person bretauv    schedule 04.07.2019
comment
Что ж, вы правы, кажется, что это решает проблему, даже когда размер уменьшается после использования полноэкранного режима. Однако до сих пор не могу понять, почему этот перенос строки. Обратите внимание, что если добавляется новая переменная с более длинным именем, то перенос строки не имеет ничего общего с ней, а с дефисом. Я редактирую вопрос, чтобы показать это.   -  person elcortegano    schedule 04.07.2019
comment
Я еще не знаю, как это исправить, но вы должны заметить, что это не из-за дефиса в частности: если вы замените, например, -mpg на new_mpg, проблема та же самая.   -  person bretauv    schedule 04.07.2019


Ответы (1)


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

DT::datatable(
  class = "display nowrap",
  extensions = c('Buttons','Scroller'),
  ......
person Stéphane Laurent    schedule 04.07.2019
comment
Да! это работает так, как ожидалось. Интересный вариант вызова классов CSS. Спасибо! - person elcortegano; 04.07.2019