私は私に頭痛を与えるcut
次の一貫性のない動作に遭遇しました:一貫性のない行動:同じ番号の異なる間隔と同じ表示のカットポイント
x <- 0.2316
cut(x, c(0, 0.2315, 10)) #gives 0.232 as cutpoint and choses second interval
## [1] (0.232,10]
## Levels: (0,0.232] (0.232,10]
cut(x, c(0, 0.232, 10)) #choses first interval when taking the same cutpoint it just gave (0.232)
## [1] (0,0.232]
## Levels: (0,0.232] (0.232,10]
問題はcut
を選んだように見えるということですピリオドを整形(丸め)する前に間隔を置いてください。これは、この例では、第2の間隔を選択するが、与えられたカット点(最後の行で見ることができる)に従って最初の間隔を選択するという一貫性のない動作につながります。
これは私のパッケージに2つの機能があるため、私にとっては問題です.1つはカットポイントを計算し、もう1つは新しいデータポイントを配置する正しい間隔を決定することです。上記の例では、同じデータポイントが第1の関数の第2の間隔に入れられますが、第2の関数の最初の間隔に入れられます。全く同じカットポイントが表示されます。それは私のパッケージにいくつかの奇妙な動作につながることができます!
私の質問
これは既知の問題ですか?はいの場合は回避策がありますか?あなた
私はあなたがより多くの小数点以下の桁数でカットポイントを持っていた場合は、まだ同じ問題が発生するdig.lab
で小数点以下の桁数を変更することができることを知っている編集をありがとうございます。上記の例は、より一般的な問題のデモンストレーションです!
カットポイントの桁数を増やしたいですか?これは 'cut(x、c(0、0.2315、10)、dig.lab = 4)'になります。 – lukeA
@lukeA:わかっていますが、小数点以下の桁数をカットポイントとして使用した場合、同じ問題が小数点以下1桁も発生します。上記は単なる例示である! – vonjd
@lukeA:私の編集をご覧ください。 – vonjd