Самый простой способ изменить формат напечатанного тиббла - это создать функцию, которая печатает мутированную версию тиббла.
Вы можете использовать небольшую нестандартную оценку, чтобы передать любые функции, которые вы хотите применить к каждому столбцу. Это очень близко к тому, что вы хотели, я думаю:
library(tidyverse)
library(scales)
format_tibble <- function(tbl, ...)
{
functions <- rlang::dots_list(...)
if(length(functions) > 0)
{
if(length(tbl) < length(functions)) functions <- functions[seq_along(tbl)]
columns <- names(functions)
for(i in seq_along(columns))
{
fun <- functions[[i]]
col <- as.name(columns[i])
tbl <- mutate(tbl, !!quo_name(col) := fun(!!enquo(col)))
}
}
print(tbl)
}
Итак, теперь, принимая ваш кусок:
t <- tibble( surface = c(98000, 178000000000, 254000000),
price = c(517244, 939484, 1340612),
rate = c(0.12, 0.07, 0.045))
Нам нужно только сделать это:
t %>%
format_tibble(surface = label_number_si(),
price = label_dollar(),
rate = label_percent())
#> # A tibble: 3 x 3
#> surface price rate
#> <chr> <chr> <chr>
#> 1 98K $517,244 12.0%
#> 2 178B $939,484 7.0%
#> 3 254M $1,340,612 4.5%
Создано в 2020-02-25 пакетом представ (v0.3.0)