我有一些数据,身高。
> 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
所以我的问题是:
- 为什么会这样?
- 我怎样才能得到我正在寻找的结果(基本上与高度[!pitpositions]相反?
编辑:
要回答第 2 个问题,我可以使用height[tp$pits]
. tp$pits 似乎具有与 相同的信息pitpositions
,但是当我打印出来时,pitpositoins
我得到了一系列TRUE
FALSE
,而当我打印出来时,tp$pits
我得到了一系列0 1
. 我会认为这些是等价的,因为0 == FALSE
和1 == TRUE
。