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

R using formatRound for all numeric columns of a datatable

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

library(tidyverse)
library(DT)

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

可能的解决方案:

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

或许,我们可以在转换为 datatable

之前执行此操作
library(dplyr)
library(DT)
iris %>%
  mutate(across(where(is.numeric), sprintf, fmt = '%.2f')) %>%
  datatable() 

或者另一种选择是检查创建的对象中的 'data' 组件

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