避免 R Shiny 中连字符后的换行符

elc*_*ano 3 html r shiny dt flexdashboard

看起来,Shiny 会在连字符 ( ) 字符后自动引入换行符-,至少在与数据表一起使用时是如此(请参见下面的示例)。我猜这与HTML 中的类似问题有关,并且可能在将文档呈现为 HTML 时发生,但在这里用“不间断”版本 ( ‑) 替换连字符将不起作用,将连字符替换为长版本 ( \xe2\x80\x94)。

\n\n

下面是重现此问题的示例代码,其中我创建了一个名称中带有减号的变量,并希望在表头中显示其名称(包括减号)。正如您所看到的,后面出现了一个换行符-

\n\n
---\ntitle: "Example"\nruntime: shiny\ntheme: simplex\nvertical_layout: fill\noutput:\n  flexdashboard::flex_dashboard:\n  orientation: rows\n---\n\nExplore\n======================================================================\n\n```{r echo = FALSE}\nlibrary("tidyverse")\nlibrary("shiny")\nlibrary("DT")\n```\n\n```{r echo = FALSE}\ncreateDataTable <- function (data) {\n\n  data %>%  \n\n    DT::datatable(\n      extensions = c(\'Buttons\',\'Scroller\'),\n      rownames=FALSE,\n      options = list(\n        paging = TRUE,\n        pageLength = nrow(data),\n        searching = TRUE,\n        fixedColumns = TRUE,\n        autoWidth = FALSE,\n        ordering = TRUE,\n        scroller = TRUE,\n        scrollX = \'400px\',\n        scrollY = \'300px\',\n        dom = \'Bfrtip\',\n        buttons = list(\n          \'copy\',\n          list(\n            extend=\'collection\',\n            buttons = list (\n              list(extend=\'csv\', filename=\'catalog\'),\n              list(extend=\'excel\', filename=\'catalog\'),\n              list(extend=\'pdf\', filename=\'catalog\')\n            ),\n            text=\'Download\'),\n          \'print\'\n        )\n      )\n    )\n}\n```\n\n```{r echo = FALSE}\nDT::renderDataTable(\n  server=FALSE, {\n  mtcars %>% dplyr::mutate(`-mpg` = -mpg, a_longer_name_for_mpg = mpg) %>% createDataTable()\n})\n\n```\n
Run Code Online (Sandbox Code Playgroud)\n\n

有谁知道如何在不更改DT所使用的函数且不拒绝在列标题中包含连字符的情况下避免这种行为?

\n\n

编辑

\n\n

看起来,如果以全屏模式查看页面,则不会出现分页符。但它与变量名称的长度无关(代码也被更新以创建名称更长的新变量)。因此,应该有一种方法可以避免这种行为,而与屏幕尺寸无关。

\n\n

这是我的sessionInfo()

\n\n
R version 3.6.0 (2019-04-26)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Arch Linux\n\nMatrix products: default\nBLAS:   /usr/lib/libblas.so.3.8.0\nLAPACK: /usr/lib/liblapack.so.3.8.0\n\nlocale:\n [1] LC_CTYPE=es_ES.UTF-8       LC_NUMERIC=C               LC_TIME=es_ES.UTF-8        LC_COLLATE=es_ES.UTF-8    \n [5] LC_MONETARY=es_ES.UTF-8    LC_MESSAGES=es_ES.UTF-8    LC_PAPER=es_ES.UTF-8       LC_NAME=C                 \n [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=es_ES.UTF-8 LC_IDENTIFICATION=C       \n\nattached base packages:\n[1] stats     graphics  grDevices utils     datasets  methods   base     \n\nloaded via a namespace (and not attached):\n [1] compiler_3.6.0        rsconnect_0.8.13      htmltools_0.3.6       tools_3.6.0           flexdashboard_0.5.1.1\n [6] yaml_2.2.0            Rcpp_1.0.1            rmarkdown_1.13        knitr_1.23            jsonlite_1.6         \n[11] xfun_0.7              digest_0.6.19         evaluate_0.13    \n
Run Code Online (Sandbox Code Playgroud)\n

Sté*_*ent 5

您可以使用以下类禁用包装nowrap

DT::datatable(
  class = "display nowrap",
  extensions = c('Buttons','Scroller'),
  ......
Run Code Online (Sandbox Code Playgroud)