DT::datatable – 格式化所选列?
DT::datatable – Format selected column?
你能帮我解决 DT::datatable 列格式问题吗?例如,我有这个 table:
DT::datatable(iris,
class = 'row-border stripe hover compact',
rownames = F,
autoHideNavigation = T,
options = list(pageLength = nrow(summary.month),
searching = F,
paging = F,
info = F))
我需要设置:
- 第 1 列:粗体,左对齐
- 第 3 列:粗体,右对齐
我发现我应该使用 columns.ClassName,但是如何在 R 中设置 class 样式?
数据table的html输出将在R markdown文档中使用。
到目前为止,我唯一能让它工作的方法是首先手动设置 HTML 标签,然后使用 escape = FALSE
这里我们将 Sepal.Length
包裹在 bold
HTML 标签中:
iris$SepalLength2 <- paste0("<b>", iris$Sepal.Length, "</b>")>
然后使用 escape = FALSE
以便解析 HTML 标签。
datatable(iris,
class = 'row-border stripe hover compact',
rownames = F,
autoHideNavigation = T, escape =FALSE)
编辑:
为了对齐 left/right,你可以用 <p align ="left"></p>
换行
所以:iris$SepalLength2 <- paste0('<p align ="right"><b>', iris$Sepal.Length, '</b></p>')
请注意,我既不是 HTML 大师,也不是这个特定库的专家,但这似乎是获得所需结果的一种方法。
您不需要修改数据的内容。相反,您可以使用 rowCallback
选项:
library(DT)
rowCallback <- c(
"function(row, data, index){",
" $(this.api().cell(index, 0).node())",
" .css('text-align', 'left')",
" .css('font-weight', 'bold');",
" $(this.api().cell(index, 2).node())",
" .css('text-align', 'right')",
" .css('font-weight', 'bold');",
"}"
)
DT::datatable(iris,
class = 'row-border stripe hover compact',
rownames = FALSE,
autoHideNavigation = TRUE,
options = list(pageLength = 5,
searching = FALSE,
paging = TRUE,
info = FALSE,
rowCallback = JS(rowCallback))
)
自从最初提出这个问题以来已经有一段时间了,但我也遇到了同样的问题。这里有一个更简单的解决方案,不需要编辑源数据或调用 JS,而是使用 functions within the DT package itself.
DT::datatable(iris,
class = 'row-border stripe hover compact',
rownames = F,
autoHideNavigation = T, escape =FALSE) %>%
formatStyle(columns = c("Sepal.Length"), fontWeight = 'bold', `text-align` = 'left') %>%
formatStyle(columns = c("Petal.Length"), fontWeight = 'bold', `text-align` = 'right')
你能帮我解决 DT::datatable 列格式问题吗?例如,我有这个 table:
DT::datatable(iris,
class = 'row-border stripe hover compact',
rownames = F,
autoHideNavigation = T,
options = list(pageLength = nrow(summary.month),
searching = F,
paging = F,
info = F))
我需要设置:
- 第 1 列:粗体,左对齐
- 第 3 列:粗体,右对齐
我发现我应该使用 columns.ClassName,但是如何在 R 中设置 class 样式?
数据table的html输出将在R markdown文档中使用。
到目前为止,我唯一能让它工作的方法是首先手动设置 HTML 标签,然后使用 escape = FALSE
这里我们将 Sepal.Length
包裹在 bold
HTML 标签中:
iris$SepalLength2 <- paste0("<b>", iris$Sepal.Length, "</b>")>
然后使用 escape = FALSE
以便解析 HTML 标签。
datatable(iris,
class = 'row-border stripe hover compact',
rownames = F,
autoHideNavigation = T, escape =FALSE)
编辑:
为了对齐 left/right,你可以用 <p align ="left"></p>
所以:iris$SepalLength2 <- paste0('<p align ="right"><b>', iris$Sepal.Length, '</b></p>')
请注意,我既不是 HTML 大师,也不是这个特定库的专家,但这似乎是获得所需结果的一种方法。
您不需要修改数据的内容。相反,您可以使用 rowCallback
选项:
library(DT)
rowCallback <- c(
"function(row, data, index){",
" $(this.api().cell(index, 0).node())",
" .css('text-align', 'left')",
" .css('font-weight', 'bold');",
" $(this.api().cell(index, 2).node())",
" .css('text-align', 'right')",
" .css('font-weight', 'bold');",
"}"
)
DT::datatable(iris,
class = 'row-border stripe hover compact',
rownames = FALSE,
autoHideNavigation = TRUE,
options = list(pageLength = 5,
searching = FALSE,
paging = TRUE,
info = FALSE,
rowCallback = JS(rowCallback))
)
自从最初提出这个问题以来已经有一段时间了,但我也遇到了同样的问题。这里有一个更简单的解决方案,不需要编辑源数据或调用 JS,而是使用 functions within the DT package itself.
DT::datatable(iris,
class = 'row-border stripe hover compact',
rownames = F,
autoHideNavigation = T, escape =FALSE) %>%
formatStyle(columns = c("Sepal.Length"), fontWeight = 'bold', `text-align` = 'left') %>%
formatStyle(columns = c("Petal.Length"), fontWeight = 'bold', `text-align` = 'right')