令我困惑的R之一是如何格式化数字以百分比形式打印。
例如,显示0.12345
为12.345%
。我对此有很多解决方法,但是这些方法似乎都不是“ newby friendly”。例如:
set.seed(1)
m <- runif(5)
paste(round(100*m, 2), "%", sep="")
[1] "26.55%" "37.21%" "57.29%" "90.82%" "20.17%"
sprintf("%1.2f%%", 100*m)
[1] "26.55%" "37.21%" "57.29%" "90.82%" "20.17%"
问题:是否有基本的R函数可以执行此操作?另外,是否有使用广泛的包装提供方便的包装?
尽管寻找的东西,像这样的?format
,?formatC
而且?prettyNum
,我还没有找到合适方便的包装在基地R. ??"percent"
没有产生任何有用的东西。 library(sos); findFn("format percent")
会返回1250次匹配-因此再次没有用。 ggplot2
具有功能,percent
但不能控制舍入精度。
sprintf
对于恰好是程序员的R编码器子集来说,这是完全可以的。我一生中编写了很多代码,包括COBOL(颤抖)和fortran(显示我的年龄)。但是我认为sprintf
格式设置规则不明显(翻译:WTF?)。当然,专用的包装器必须比sprintf调用起来容易,例如:format_percent(x=0.12345, digits=2)
sprintf()
几乎没有发现foo包包含的时间format_percent()
。如果用户随后不想格式化为百分比,但又希望类似的格式,会发生什么?他们需要找到另一个包装器。从长远来看,基础工具将是有益的。
%
就是LaTeX中的注释字符,它是R的“默认”报告格式。因此,尽管它对于标记图形很有用,但是如果要对格式化的数字进行转换,必须格外小心。
sprintf
似乎是邮件列表上最喜欢的解决方案,而且我还没有看到更好的解决方案。无论如何,任何内置函数都不会简单得多,对吧?