2014-05-08 64 views
1

我正在使用sprintf來輸出一個數字。該數字可以是整數或浮點數。在R中抑制輸出整數的尾部零點

由於某些原因,如果數字是浮點數,我需要保留小數點後三位數字,而直接輸出整數。

例如,如果數字是3,那麼它應該輸出3。如果號碼是3.333333,那麼它應該輸出3.333。我如何使用sprintf()格式化字符串,還是有其他方法?

回答

0

你可以做一個條件格式:

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

如果是整數

f(3L) 
[1] "3" 

如果浮點:

f(3.3333333) 
[1] "3.333" 
0

從卡洛斯的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" 

我已經得到了幫助頁面上的一個例子wholenumber功能is.integer