将数字连接到字符串输出,格式化每个数字以使用相同的字符宽度

时间:2012-11-05 21:43:02

标签: r concatenation number-formatting output-formatting

我有一个载体

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__"

这里_表示这样的想法,因为数字的位数较少,我们需要用空格替换它们。 知道如何实现这个目标吗?

2 个答案:

答案 0 :(得分: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 :(得分:1)

如果使用等宽字体打印,则添加正确数量的空格将解决此问题。

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

如果这应该在带有比例字体的plotmath表达式中使用,则需要其他策略。