2012-04-05 19 views
6

bir değişiklikten önce bir satır belirlenmesi:R ben yön var işareti

df <- c(5,9,-8,-7,-1) 

nasıl burcunda bir değişiklikten önce pozisyon belirleyebilir? yani df[2]

cevap

14

Eğer sign işlevi hakkında biliyorsanız, bu, oldukça basit ...

which(diff(sign(df))!=0) 
# [1] 2 
+1

... ve 'diff' işlevini biliyorsan :) – Tommy

+0

Teşekkür ederim. Bu çok yararlı. –

+0

Dikkatli olun, bu cevap c (0,1) işaretinin değiştiğini dikkate alır. Bu, uygulamaya bağlı olarak istenebilir veya istenmeyebilir! Karmaşık eğlence için – MHH

1

Ben Yuşa cevabı tercih, ama burada alternatif sadece eğlence için, daha karmaşık biri:

head(cumsum(rle(sign(df))$lengths),-1) 
Eğer korkunç bir insan olmak istiyorsanız
+0

+1! Yukarıdaki cevaba @JoshuaUlrich tarafından verilen –

+0

benzer şekilde, bu cevap c (0,1) 'nin bir işaret değişikliğine sahip olduğunu düşünmektedir. Bu, uygulamaya bağlı olarak istenebilir veya istenmeyebilir! – MHH

-1

, her zaman döngü için kullanabilirsiniz:

signchange <- function(x) { 
    index = 0 
    for(i in 1:length(x)) 
    { 
     if(x[i] < 0) 
     { 
      return (index) 
     } 
     else 
     { 
      index = index + 1 
     } 
    } 
    return (index) 
} 
+2

İndirgeyici değildim ama eğer korkunç bir kişi olacak ve bir döngü kullanacaksanız, en azından ilk elemanın pozitif mi yoksa negatif mi olduğunu kontrol etmelisiniz. İlk negatif değeri algılar - ilk işaret değişikliğini değil. – Dason

İlgili konular