2017-02-24 19 views
0

Rの入力値に基づいて区切りを作成し、それらの値に基づいて等間隔を適用しています。等間隔の間隔を作成する0

for_break = c(-100, -90, -80, -50, 0, 3, 5, 20, 30, 40, 80) 

、私は等間隔切断を適用する、5つの間隔が使用合計:

breaks_num = breaks$brks 

library(classInt) 

breaks = classIntervals(for_break, n = 5, style = "equal", intervalClosure = "right") 

を私は休憩を返すIは、入力ベクトルを供給する。これを行うには

戻り値:

[1] -100 -64 -28 8 44 80 

番号0の周りに中断したいと思います。

入力ベクトルを供給し、正と負の両方の側で等間隔の間隔をゼロにする方法はありますか?

c(-8, -6, -3, -2, 2, 4, 6, 9) 

と私はなるだろう各側に3時間間隔で、ゼロの正および負側の等間隔を望んでいることを指定:

私はこの入力ベクトルを与えた場合の例として

c(-8.000, -5.333, -2.666, 0.000, 3.000, 6.000, 9.000) 

答えて

1

:あなたはそれを私にビート

for_break = c(-100, -90, -80, -50, 0, 3, 5, 20, 30, 40, 80) 

equalSpacing <- function(vector, per.side) { 
    negs <- seq.int(from = min(vector), to = 0, length.out = per.side + 1L) 
    pos <- seq.int(from = 0, to = max(vector), length.out = per.side + 1L) 
    return(c(negs, pos[ pos != 0 ])) 
} 

equalSpacing(for_break, 4) 
+0

ありがとう、私はこの例が本当に好きです。私は実際のデータセット 'このエラーをseq.intのエラー(from = min(vector)、to = 0、length.out = per.side + 1L): 'from' must be finite'に返しました。明らかにあなたの例はうまくいくが、なぜこれが起こるのだろうか? –

+0

入力ベクトルは何ですか? – rosscova

+0

非常に長いです、私はオブジェクト型と関係があると考えています。私はPythonからRに新しいです私を許してください。 'typeof(object)'を実行すると 'double 'となるので、浮動小数点であることがわかります –

2

このロジックを使用して、そこから関数を作成することができます。

何について
x=c(-8, -6, -3, -2, 2, 4, 6, 9) 
i=max(x)/3 
j=min(x)/3 
c(rev(seq(0, min(x), j)), seq(0, max(x), i)[-1]) 
+1

:)。 – rosscova

+0

おそらく秒であったでしょう。 –

+0

確かに。私はちょっと違うので、私もここに残しておきます。 – rosscova

関連する問題