1

私はいくつかのデータ、高さを持っています。

> print(height)
             V3          V4          V5          V6          V7          V8          V9         V10         V11         V12         V13         V14         V15 
      0.0000000  -3.1486232  39.1502937  -2.8437808 -24.7633269 -35.4022061 -36.2401943  46.4133021 -19.1868097   0.4067331  22.6768200 -38.8550971 -41.3161054 
            V16         V17         V18         V19         V20 
     33.0446273  41.4934899  19.9558741   3.3477473   0.3611974

次に、turnpoints() を適用し、extract() を使用して、最小値の位置を示す論理ベクトルのように見えるものを取得します。

tp = turnpoints(height)
pitpositions = extract(tp, peak = FALSE, pit = TRUE)
print(pitpositions) # [1] 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0

height[pitpositions]それが最小の値を与え、それheight[!pitpositions]が非最小の値を与えると私は期待しています。

後者は期待どおりに機能します。

> height[!pitpositions]
         V3          V5          V6          V7          V8         V10         V12         V13         V14         V16         V17         V18         V19 
  0.0000000  39.1502937  -2.8437808 -24.7633269 -35.4022061  46.4133021   0.4067331  22.6768200 -38.8550971  33.0446273  41.4934899  19.9558741   3.3477473 
        V20 
  0.3611974

しかし、前者はそうではなく、結果を解釈する方法がわかりません。

> height[pitpositions]
V3 V3 V3 V3 
 0  0  0  0 

だから私の質問は:

  1. なぜこうなった?
  2. 探している結果を取得するにはどうすればよいですか (基本的には高さの反対[!ピットポジション]?

編集:

質問 2 に答えるには、 を使用して探しているものを取得できますheight[tp$pits]。tp$pits は と同じ情報を持っているようですが、pitpositions印刷するpitpositoinsと一連の が得られますが、TRUE FALSE印刷するtp$pitsと一連の が得られ0 1ます。0 == FALSEと のように、これらは同等だと思っていたでしょう1 == TRUE

4

1 に答える 1

1

extract私はあなたが望むことをしているとは思わない。height[!pitpositions] があなたの好きなものを与えてくれるのは偶然です。

tpのコンポーネントを直接使用するようなものをお勧めします。

Rgames> tp$peaks
 [1] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
[13] FALSE FALSE  TRUE FALSE FALSE FALSE
Rgames> tp$pits
 [1] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
[13]  TRUE FALSE FALSE FALSE FALSE FALSE
Rgames> height[tp$peaks]
[1] 39.15029 46.41330 22.67682 41.49349
Rgames> height[tp$pits]
[1]  -3.148623 -36.240194 -19.186810 -41.316105

編集:オブジェクトのデフォルトのメソッドは次extractturnpointsようです:

Rgames> extract(tp)
 [1]  0 -1  1  0  0  0 -1  1 -1  0  1  0 -1  0  1  0  0  0

したがって、そのサブセットを抽出するのではなく、おそらく次のようなことをしたいと思うでしょう。

height[extract(tp)== -1] 

ピット用、および

height[extract(tp)== 1]

ピーク用。extract投稿された元の式は、1に等しくない(または-1に等しくない)すべての値を返すため、ゼロとベクトルの長さの変化が生じると思われます。

于 2013-09-09T13:42:23.777 に答える