[解決済み] 10(または100、X)未満を切り上げるには?
質問
データをプロットする関数を書いています。私は、Y軸にきれいな丸い数を指定したいと思います。
max
に、データセットの最大値よりも大きな丸い数値を指定したいのですが。
具体的には、関数
foo
を実行するような関数が欲しい。
foo(4) == 5
foo(6.1) == 10 #maybe 7 would be better
foo(30.1) == 40
foo(100.1) == 110
までたどり着きました。
foo <- function(x) ceiling(max(x)/10)*10
は10に最も近い値への丸め用ですが、これは任意の丸め間隔では動作しません。
Rでこれを行う良い方法はありますか?
どのように解決するのですか?
10の累乗に切り上げたいだけなら、定義するだけです。
roundUp <- function(x) 10^ceiling(log10(x))
これは実はxがベクトルである場合にも有効です。
> roundUp(c(0.0023, 3.99, 10, 1003))
[1] 1e-02 1e+01 1e+01 1e+04
...しかし、もしあなたが "nice" 数に丸めたいのであれば、まず "nice" 数が何であるかを定義する必要があります。以下では、"nice" を 1 から 10 までの nice 基底値を持つベクトルとして定義することができます。デフォルトでは、偶数に5を足した値に設定されています。
roundUpNice <- function(x, nice=c(1,2,4,5,6,8,10)) {
if(length(x) != 1) stop("'x' must be of length 1")
10^floor(log10(x)) * nice[[which(x <= 10^floor(log10(x)) * nice)[[1]]]]
}
xがベクトルの場合、上記はうまくいきません。)
> roundUpNice(0.0322)
[1] 0.04
> roundUpNice(3.22)
[1] 4
> roundUpNice(32.2)
[1] 40
> roundUpNice(42.2)
[1] 50
> roundUpNice(422.2)
[1] 500
[編集]]する
もし質問が指定された最も近い値(10や100など)に丸める方法であるなら、ジェームス
と答えます。
が最も適切だと思います。私のバージョンでは、任意の値を取って、自動的に合理的な "nice"値に丸めることができます。上記の"nice"ベクトルの他の良い選択はいくつかあります。
1:10, c(1,5,10), seq(1, 10, 0.1)
もし、プロットの中に値の範囲がある場合、例えば
[3996.225, 40001.893]
のような値の範囲がある場合、自動的な方法は範囲の大きさと数値の大きさの両方を考慮する必要があります。そして、例えば
が指摘したように、ハドレー
は、その
pretty()
関数は、あなたが望むものであるかもしれません。
関連
-
R: エラー: $ 演算子は原子ベクトルに対して無効です。
-
[R] is.data.frame(x) のエラー : (リスト) オブジェクトを 'double' 型に強制できない。
-
[解決済み] Rの再現性のある優れた例題の作り方
-
[解決済み] データフレームを結合(マージ)する方法(内側、外側、左側、右側)
-
[解決済み] Javaで数値を小数点以下n桁に丸める方法
-
[解決済み] 数字を切り上げるには?
-
[解決済み] Javascriptで小数点以下1桁に丸めるにはどうしたらいいですか?
-
[解決済み] Pythonで小数点以下2桁に丸めるには?
-
[解決済み] 統計的最頻値の求め方は?
-
[解決済み】自作関数を書くときにRの省略機能を使うには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
RStudio の "plot.new() : figure margins too large" 問題を解決する。
-
R plot.new() のエラー : 図形の余白が大きすぎる
-
[R] is.data.frame(x) のエラー : (リスト) オブジェクトを 'double' 型に強制できない。
-
[解決済み] "エラーです。Rでテーマの書式を保存する際に「Don't know how to add RHS to the theme object」(テーマオブジェクトにRHSを追加する方法がわかりません)と表示されます。
-
[解決済み] Rで文字列から文字を削除する
-
[解決済み] Rで複数行のコメントを持つことは可能ですか?[重複している]。
-
[解決済み] 関数のソースコードを見るにはどうしたらいいですか?
-
[解決済み] require()とlibrary()の違いは何ですか?
-
[解決済み] データフレーム内の列を名前でドロップする方法
-
[解決済み】ifelse()でDateオブジェクトがnumericオブジェクトにならないようにする方法