簡體   English   中英

在R中向量中找到從正到負切換的最快方法

[英]Fastest way to find switching from positive to negative in a vector in R

我有一個包含正值和負值的向量。 比如像

x = c(1,2,1,-2,-3,3,-4,5,1,1,-3)

現在我想標記向量的索引,其中值從正變為負或從負變為正。 所以在上面的例子中,我想要一些看起來像這樣的索引向量

y=c(0,0,0,1,0,1,1,1,0,0,1)

我在R這樣做,所以如果可能的話我想避免使用for循環。

我認為這應該有效:

+(c(0, diff(sign(x))) != 0)
#[1] 0 0 0 1 0 1 1 1 0 0 1

all.equal(+(c(0, diff(sign(x))) != 0), y)
#[1] TRUE

這是一種方式:

yy = rep(0, length(x))
yy[with(rle(sign(x)),{ p = cumsum(c(1,lengths)); p[ -c(1,length(p)) ] })] = 1

all.equal(yy,y) # TRUE

......結果比我預期的更令人費解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM