Правильно форматируйте отрицательные значения валюты со знаком минус перед знаком доллара - PullRequest
3 голосов
/ 11 апреля 2019

Я хочу правильно отформатировать отрицательные значения валюты со знаком минус перед знаком доллара.

Следующий код ставит знак минус после знака доллара, т.е. $ -100

library(scales)
dollar(-100)

Как бы вы изменили это на желаемый результат, то есть - $ 100? Я не вижу очевидного варианта в документации https://rdrr.io/cran/scales/man/dollar_format.html

Ответы [ 2 ]

3 голосов
/ 11 апреля 2019

Поскольку вывод dollar() является символьным вектором, вы можете определить новую функцию, используя chartr в результатах, чтобы условно поменять символы и использовать ... для передачи дополнительных аргументов исходной функции.

library(scales)

newdollar <- function(x, ...) ifelse(x < 0, chartr("$-", "-$", dollar(x, ...)), dollar(x, ...))
newdollar(c(5, -5), suffix = "!!" )

[1] "$5!!"  "-$5!!"
1 голос
/ 11 апреля 2019

Один хакерский способ - явно добавить знак "-" к абсолютному значению amount, если amount меньше 0.

library(scales)
amount <- c(100, -200, -50)
ifelse(amount < 0, paste0("-", dollar(abs(amount))), dollar(amount))
#[1] "$100"  "-$200" "-$50" 
...