0

私はマトリックスを持っています:

x<-matrix(c(1,2,3,4,5,6,7,8,9,10),nrow=10,ncol=1)

およびインデックス:

vec<-c(1,4,7,8,9,10)

次のインデックスよりも小さいすべての要素を取得したいと思います。したがって、上記のインデックス ベクトルが与えられた上記の例では、次のようなものを見たいと思います。

1,2,3
4,5,6
7
8
9
10

現在、for ループを使用しています。

for(i in 2:length(vec)){
  cat(x[(vec[i-1]):(vec[i]-1)],"\n")

}

これはうまく機能しますが、最後の要素である 10 を返しません。

何か案は?

誰かがこの例を試すことができますか?私の R セッションは間違った値を返しているようです:

vec<-c(1,7, 10, 11, 12)
x<- c(251, 272, 291, 314, 333, 355, 377, 397, 420, 440, 462, 483, 503)

ありがとう、

4

3 に答える 3

3

試す:

tapply( x,  findInterval( x,  vec) ,'[')

x[vec] をブレーク ポイントとして使用する場合は、それを findInterval の 2 番目の引数として使用します。

于 2013-06-05T19:41:12.910 に答える
0

vecこれは、分割を使用して中間値を入力するアプローチです。vec予想される警告で終わらない場合length(x)(それでも正しい結果が得られます):

split(x, rep(vec, c(diff(vec), 1)))
于 2013-06-05T20:06:48.447 に答える