避免在 R Shiny 中连字符后使用 line-breaks
Avoid line-breaks after hyphen in R Shiny
似乎 Shiny 在连字符 (-
) 字符后自动引入了一个 line-break,至少在与数据 table 一起使用时是这样(请参见下面的示例)。我想这与 a similar problem in HTML 有关,并且可能在文档呈现为 HTML 时发生,但此处用 "non-breaking" 版本(‑
)替换连字符不会工作,也没有用长版本 (—
) 替换连字符。
这是重现此问题的示例代码,我在其中创建了一个名称中带有减号的变量,并希望在 table [=39= 中显示其名称(包括减号) ].可以看到,在-
之后出现了一个line-break。
---
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
函数并且不拒绝在 header 列中包含连字符的情况下避免这种行为?
编辑
好像如果全屏查看页面,就没有page-break。但它与变量名的长度无关(代码也被更新以创建一个名称更长的新变量)。所以应该有一种方法可以避免这种行为,与屏幕尺寸无关。
这是我的 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
您可以使用 class nowrap
:
禁用换行
DT::datatable(
class = "display nowrap",
extensions = c('Buttons','Scroller'),
......
似乎 Shiny 在连字符 (-
) 字符后自动引入了一个 line-break,至少在与数据 table 一起使用时是这样(请参见下面的示例)。我想这与 a similar problem in HTML 有关,并且可能在文档呈现为 HTML 时发生,但此处用 "non-breaking" 版本(‑
)替换连字符不会工作,也没有用长版本 (—
) 替换连字符。
这是重现此问题的示例代码,我在其中创建了一个名称中带有减号的变量,并希望在 table [=39= 中显示其名称(包括减号) ].可以看到,在-
之后出现了一个line-break。
---
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
函数并且不拒绝在 header 列中包含连字符的情况下避免这种行为?
编辑
好像如果全屏查看页面,就没有page-break。但它与变量名的长度无关(代码也被更新以创建一个名称更长的新变量)。所以应该有一种方法可以避免这种行为,与屏幕尺寸无关。
这是我的 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
您可以使用 class nowrap
:
DT::datatable(
class = "display nowrap",
extensions = c('Buttons','Scroller'),
......