22

たとえば、「-0.34」が単に「-.34」になるように、数値のR変数を簡潔に変更(数値のまま)するにはどうすればよいでしょうか。

4

5 に答える 5

31

数値を出力する場合にのみ、具体的な表現(つまり、数値のフォーマット方法)を選択する必要があります。数値変数を「-0.34」から「-.34」に変更することはできません。どちらも同じ番号の表現です。

ただし、式を出力するときは、eどのようにフォーマットするかを選択できます。先頭の「0」を省略する組み込みの方法はわかりませんが、いつでも手動で削除できます。

> sub("^(-?)0.", "\\1.", sprintf("%.2f", -0.34))
[1] "-.34"

便宜上、関数を定義できます。たとえば、

numformat <- function(val) { sub("^(-?)0.", "\\1.", sprintf("%.2f", val)) }
于 2012-10-07T00:22:06.293 に答える
12

既存の回答に加えて、パッケージには「先行ゼロのないテキストに数値を丸める」ために使用できるweights機能があることを言及したいと思います。rd()もちろん、結果は数値ではなく文字です。

library("weights")
rd(-0.341, digits=2)
[1] "-.34"
于 2014-01-30T13:17:41.873 に答える
3

小数点以下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"
于 2017-05-24T05:41:30.873 に答える
2

@stefanの良い答えに加えて、私は同じことを達成するが、より多くの小数点以下の桁数を出力する次のコードに出くわしました。

f = function(X1)gsub("0\\.","\\.", X1)
于 2012-10-07T14:04:05.407 に答える
2

R Markdownでレポートする場合は、関数apa()とコードを含むパッケージMOTEを使用します。apa(-0.34, 2, FALSE)これにより、ドキュメントで-.34が返されます。

于 2017-12-07T18:16:45.410 に答える