抑制R中输出整数的尾随零

时间:2014-05-08 02:46:52

标签: r printf

我正在使用sprintf输出一个数字。数字可以是整数或浮点数。

出于某种原因,如果数字是浮点数,我需要在小数点后保留三位数,同时直接输出整数。

例如,如果数字为3,则应输出3。如果数字为3.333333,则应输出3.333。如何使用sprintf()格式化字符串,还是有其他方法?

2 个答案:

答案 0 :(得分:1)

Carlos Cinelli的答案非常优雅。它是正确的,因为它测试实际数据类型是否为整数。但是,如果shapeare只想测试数字是一个"整数",也就是说,没有小数位,以下解决方案可能会更好:

is.wholenumber <- function(x, tol = .Machine$double.eps^0.5)  abs(x - round(x)) < tol
f <- function(x) sprintf(ifelse(is.wholenumber(x),"%i", "%.3f"), x)

这样,如果它是整数(又称整数):

f(3)
[1] "3"

我在 is.integer 的帮助页面上的示例中获得了全数功能。

答案 1 :(得分:0)

您可以进行条件格式化:

f <- function(x) sprintf(ifelse(is.integer(x),"%i", "%.3f"), x)

如果是整数:

f(3L)
[1] "3"

如果是浮点数:

f(3.3333333)
[1] "3.333"