gpt4 book ai didi

r - 在 R 中,您将如何编写包装函数或类来将数字格式化为百分比、货币等?

转载 作者:行者123 更新时间:2023-12-04 01:37:07 25 4
gpt4 key购买 nike

previous question ,我问在基 R 中是否存在方便的包装器来将数字格式化为百分比。

这引起了三个回应:

  • 可能不是。
  • 这样的包装器太窄而无用。用户最好学习如何使用现有工具,例如 sprintf ,它可以以高度灵活的方式格式化数字。
  • 无论如何,这样的包装器是有问题的,因为您失去了对对象执行计算的能力。

  • 尽管如此,在我看来 sprintf函数对于 R 初学者学习来说有点过于模糊(除非他们来自 C 背景)。或许更好的解决办法是修改 formatprettyNum具有添加前缀和后缀的选项,因此您可以轻松创建百分比、货币、度数等。

    问题:

    你将如何设计一个函数、类或函数集来优雅地处理格式化数字为百分比、货币、度等?

    最佳答案

    我可能会让事情变得非常简单。 format()通常对于大多数基本的格式化需求很有用。我会用一个简单的包装器来扩展它,允许任意 prefixsuffix字符串。这是一个简单的版本:

    formatVal <- function(x, prefix = "", suffix = "", sep = "", collapse = NULL,
    ...) {
    x <- format(x, ...)
    x <- paste(prefix, x, suffix, sep = sep, collapse = collapse)
    x
    }

    如果我真的这样做,我可能不会拥有 collapse formatVal() 定义中的参数,而是从 ... 中处理它,但为了说明,我保持上述功能简单。

    使用:
    set.seed(1)
    m <- runif(5)

    一些简单的用法示例
    > formatVal(m*100, suffix = "%")
    [1] "26.55087%" "37.21239%" "57.28534%" "90.82078%" "20.16819%"
    > formatVal(m*100, suffix = "%", digits = 2)
    [1] "27%" "37%" "57%" "91%" "20%"
    > formatVal(m*100, suffix = "%", digits = 2, nsmall = 2)
    [1] "26.55%" "37.21%" "57.29%" "90.82%" "20.17%"
    > formatVal(m, prefix = "£")
    [1] "£0.2655087" "£0.3721239" "£0.5728534" "£0.9082078" "£0.2016819"
    > formatVal(m, prefix = "£", digits = 1)
    [1] "£0.3" "£0.4" "£0.6" "£0.9" "£0.2"
    > formatVal(m, prefix = "£", digits = 1, nsmall = 2)
    [1] "£0.27" "£0.37" "£0.57" "£0.91" "£0.20"

    关于r - 在 R 中,您将如何编写包装函数或类来将数字格式化为百分比、货币等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7147706/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com