我正在使用sprintf
來輸出一個數字。該數字可以是整數或浮點數。在R中抑制輸出整數的尾部零點
由於某些原因,如果數字是浮點數,我需要保留小數點後三位數字,而直接輸出整數。
例如,如果數字是3
,那麼它應該輸出3
。如果號碼是3.333333
,那麼它應該輸出3.333
。我如何使用sprintf()
格式化字符串,還是有其他方法?
我正在使用sprintf
來輸出一個數字。該數字可以是整數或浮點數。在R中抑制輸出整數的尾部零點
由於某些原因,如果數字是浮點數,我需要保留小數點後三位數字,而直接輸出整數。
例如,如果數字是3
,那麼它應該輸出3
。如果號碼是3.333333
,那麼它應該輸出3.333
。我如何使用sprintf()
格式化字符串,還是有其他方法?
你可以做一個條件格式:
f <- function(x) sprintf(ifelse(is.integer(x),"%i", "%.3f"), x)
如果是整數
f(3L)
[1] "3"
如果浮點:
f(3.3333333)
[1] "3.333"
從卡洛斯的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。