2

R には長さが異なる 2 つのベクトルがあり、これら 2 つのベクトルを組み合わせることができます。各間隔に属するベクトル値を見つけたい:

x = c(1, 2, 3.5, 4, 6, 7.5, 8, 9, 10, 11.5, 12) 
y = c(2.5, 6.5) 

w = sort(c(x, y))

2.5 未満のベクトル値 x と間隔 (2.5, 6.5) に属するベクトル値 x と 6.5 より大きいベクトル値 x を見つけたいですか?

実際には、アルゴリズムの反復ごとにベクトル y の値が変化します。たとえば、長さ = 4 のベクトル y があるので、各反復の各間隔に属するベクトル値を見つけるにはどうすればよいでしょうか?

4

2 に答える 2

5

試す:

> split(x, findInterval(x, y))
$`0`
[1] 1 2

$`1`
[1] 3.5 4.0 6.0

$`2`
[1]  7.5  8.0  9.0 10.0 11.5 12.0

これが私たちが変わると何が起こるかですy

> y = c(2.5, 6.5, 10.5)
> split(x, findInterval(x, y))
$`0`
[1] 1 2

$`1`
[1] 3.5 4.0 6.0

$`2`
[1]  7.5  8.0  9.0 10.0

$`3`
[1] 11.5 12.0
于 2012-04-29T06:27:47.247 に答える
2

関数cut()を使用してベクトルを区間に分割します。

cut(x, breaks=c(-Inf, y, Inf))

 [1] (-Inf,2.5] (-Inf,2.5] (2.5,6.5]  (2.5,6.5]  (2.5,6.5]  (6.5, Inf] (6.5, Inf] (6.5, Inf] (6.5, Inf] (6.5, Inf] (6.5, Inf]
Levels: (-Inf,2.5] (2.5,6.5] (6.5, Inf]
于 2012-04-29T10:41:56.843 に答える