たとえば、「-0.34」が単に「-.34」になるように、数値のR変数を簡潔に変更(数値のまま)するにはどうすればよいでしょうか。
5 に答える
数値を出力する場合にのみ、具体的な表現(つまり、数値のフォーマット方法)を選択する必要があります。数値変数を「-0.34」から「-.34」に変更することはできません。どちらも同じ番号の表現です。
ただし、式を出力するときは、e
どのようにフォーマットするかを選択できます。先頭の「0」を省略する組み込みの方法はわかりませんが、いつでも手動で削除できます。
> sub("^(-?)0.", "\\1.", sprintf("%.2f", -0.34))
[1] "-.34"
便宜上、関数を定義できます。たとえば、
numformat <- function(val) { sub("^(-?)0.", "\\1.", sprintf("%.2f", val)) }
既存の回答に加えて、パッケージには「先行ゼロのないテキストに数値を丸める」ために使用できるweights
機能があることを言及したいと思います。rd()
もちろん、結果は数値ではなく文字です。
library("weights")
rd(-0.341, digits=2)
[1] "-.34"
小数点以下3桁までの数字を表示する必要がありました。小数点以下の任意の桁数に印刷したいが、別のパッケージ(つまり、weights
上記のパッケージ)を追加する必要がない場合、この関数(@stefanの回答から採用)は機能するようです。
numformat <- function(x, digits = 2) {
ncode <- paste0("%.", digits, "f")
sub("^(-?)0.", "\\1.", sprintf(ncode, x))
}
したがって、たとえば:
> numformat(-.232, 2)
[1] "-.23"
> numformat(-.232, 3)
[1] "-.232"
> numformat(-.232, 4)
[1] "-.2320"
@stefanの良い答えに加えて、私は同じことを達成するが、より多くの小数点以下の桁数を出力する次のコードに出くわしました。
f = function(X1)gsub("0\\.","\\.", X1)
R Markdownでレポートする場合は、関数apa()とコードを含むパッケージMOTEを使用します。apa(-0.34, 2, FALSE)
これにより、ドキュメントで-.34が返されます。