2012-11-05 14 views
2

我有一個載體串連成數字串輸出,格式化後的數字取相同的字符寬度

a<-c(18.123412, 0, 1.5, 34.123, 2.1) 

我想創建一個字符串。

paste(round(a,3), collapse = " ") 

一切工作不錯,但我想對於每個數字輸出的問題是一樣的,我的意思如下。現在我有

"18.123 0 1.5 34.123 2.1" 

,我需要

"18.123 0___ 1.5__ 34.123 2.1__" 

這裏_表示的想法,因爲數量有數字量較小,我們需要空間來替代它們。 任何想法如何我可以實現這一點?

回答

3

使用formatC

formatC(a, width=10, drop0trailing=TRUE) 
[1] "  18.12" "   0" "  1.5" "  34.12" "  2.1" 

paste成一個字符串,使用參數collapse=""

paste0(formatC(a, width=10, drop0trailing=TRUE), collapse="") 
[1] "  18.12   0  1.5  34.12  2.1" 

要左對齊,使用參數flag="-"

formatC(a, width=10, drop0trailing=TRUE, flag="-") 
[1] "18.12  " "0   " "1.5  " "34.12  " "2.1  " 

?formatC?prettyNum?format更多的幫助和其他選項。

1

如果您使用等寬字體進行打印而不是添加正確數量的空格將修復此問題。

> paste(sprintf("%-8s", round(a, 3)), collapse="") 
#[1] "18.123 0  1.5  34.123 2.1  " 

如果這應該用在比例字體的plotmath表達式中,那麼您將需要其他策略。