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

ここで _ は、数字の桁数が少ないため、スペースで置き換える必要があるという考えを示しています。どうすればこれを達成できますか?

4

2 に答える 2

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

于 2012-11-05T21:49:47.137 に答える
1

等幅フォントで印刷している場合は、適切な数のスペースを追加することでこれが修正されます。

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

これがプロポーショナル フォントのプロット数式で使用されることになっている場合は、他の戦略が必要になります。

于 2012-11-05T21:51:49.710 に答える