R对数据表的所有数字列使用formatRound



以下R代码可用于格式化iris数据的前四列。想知道如何格式化所有数字列,而不是给出它们的名称或位置。

library(tidyverse)
library(DT)
iris %>% 
datatable() %>% 
formatRound(1:4, digits = 2)

也许,我们可以在转换为datatable之前这样做

library(dplyr)
library(DT)
iris %>%
mutate(across(where(is.numeric), sprintf, fmt = '%.2f')) %>%
datatable() 

或者另一个选项是检查创建的对象中的"数据"组件

iris %>% 
datatable()  %>%
formatRound(purrr::map_lgl(.$x$data, is.numeric), digits = 2)

一个可能的解决方案:

iris %>% 
datatable() %>% 
formatRound(which(sapply(iris,is.numeric)), digits = 2)

最新更新