2012-12-17 15 views
6

Czy można napisać pętlę for z dyskretnymi poziomami?Dla pętli ponad unikalnymi wartościami

Mam wektor następującą postać:

a<-c(1,1,1,1,1,3,3,5,11,18 ....1350) 

jest rosnąca serii, ale nie wynika żadnej logicznej kolejności;

chciałbym uruchomić na poziomie pętli przy użyciu (A) argument:

for i in 1:levels(a) 

pojawia się następujący błąd:

In 1:levels_id : 
numerical expression has 1350 elements: only the first used 

Odpowiedz

14

początkowego błędu jest to, że są mylące zapętlenie nad indeksem z pętlą nad elementami twojego wektora.

Jeśli chcesz pętli nad unikalnymi elementami swojej wektora następnie użyć:

for(i in unique(a)) 

Zakładam, że to, co chcesz zrobić. Ale alternatywą jest do pętli nad indeksu unikalnego nosiciela:

for(i in 1:length(unique(a))){ 
    this.a <- unique(a)[i] 
} 

Te dwa są równoważne, ale drugi pozwoli Ci znać aktualny indeks, jak również (jeśli kiedykolwiek potrzebował).

+0

Są one równoważne iff length (a)> 0. –