Откуда взялся класс "currency"
? Самый близкий, который я мог найти, был formattable::currency
(даже это возвращает класс "formattable" "numeric"
). В этом случае вы можете сделать:
library(dplyr)
fun <- function(x, y) {
tibble(start = x) %>%
mutate(k = x * y) %>%
mutate_at(vars(start, k), formattable::currency)
}
fun(1:10, 2)
# A tibble: 10 x 2
# start k
# <formttbl> <formttbl>
# 1 $1.00 $2.00
# 2 $2.00 $4.00
# 3 $3.00 $6.00
# 4 $4.00 $8.00
# 5 $5.00 $10.00
# 6 $6.00 $12.00
# 7 $7.00 $14.00
# 8 $8.00 $16.00
# 9 $9.00 $18.00
#10 $10.00 $20.00
Даже если он из какого-то другого пакета, вы сможете сделать то же самое с методами по умолчанию, представленными в классе. Например, чтобы изменить его на "character"
класс, вы можете использовать:
fun <- function(x, y) {
tibble(start = x) %>%
mutate(k = x * y) %>%
mutate_at(vars(start, k), as.character)
}
РЕДАКТИРОВАТЬ
fun <- function(x, y) {
data <- tibble(start = x) %>% mutate(k = x * y)
data[c('k', 'start')] <- lapply(data[c('k', 'start')],
function(x) {class(x) <- "Currency";x})
return(data)
}
str(fun(1:10, 2))
#Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 10 obs. of 2 variables:
# $ start: 'Currency' int 1 2 3 4 5 6 7 8 9 10
# $ k : 'Currency' num 2 4 6 8 10 12 14 16 18 20