【问题标题】:Avoid line-breaks after hyphen in R Shiny避免在 R Shiny 中的连字符后换行
【发布时间】:2019-11-15 06:13:55
【问题描述】:

似乎 Shiny 会在连字符 (-) 字符后自动引入换行符,至少在与数据表一起使用时是这样(参见下面的示例)。我猜这与a similar problem in 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    

【问题讨论】:

  • 能否添加所需的包和/或环境(markdown...)?我对这种代码不是很熟悉
  • 我已经用一些可能丢失的库以及sessionInfo()的结果编辑了帖子
  • 这很奇怪,因为当我将窗口设置为全屏时,没有换行符(我使用的是 windows 10),您是否尝试在浏览器中打开它?
  • 嗯,你是对的,这似乎修复了问题,即使在使用全屏视图后缩小尺寸也是如此。但是,仍然无法理解为什么会出现这种换行符。请注意,如果添加了具有更长名称的新变量,则换行符与它无关,而是与连字符有关。我编辑问题以显示这一点。
  • 我还不知道如何修复它,但你应该注意到它不是特别是由于连字符:如果你用 new_mpg 替换 -mpg ,问题是一样的

标签: html r shiny dt flexdashboard


【解决方案1】:

您可以使用 nowrap 类来禁用包装:

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

【讨论】:

  • 是的!这按预期工作。调用 CSS 类的有趣选项。谢谢!
猜你喜欢
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 2018-10-24
  • 2012-05-09
  • 2013-01-28
相关资源
最近更新 更多