2012-12-17 41 views
6

Có thể viết vòng lặp for với các mức rời rạc không?Đối với vòng lặp qua các giá trị duy nhất

Tôi có một vector của các hình thức sau đây:

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

nó là một loạt tăng nhưng không theo bất kỳ thứ tự hợp lý;

Tôi muốn chạy một cho các cấp vòng lặp sử dụng (a) như một cuộc tranh cãi:

for i in 1:levels(a) 

tôi nhận được lỗi sau:

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

Trả lời

14

sai lầm ban đầu của bạn là bạn đang bối rối looping trên chỉ mục với vòng lặp trên các phần tử của vectơ của bạn.

Nếu bạn muốn để lặp qua yếu tố độc đáo của vector của bạn sau đó sử dụng:

for(i in unique(a)) 

tôi giả sử đó là những gì bạn muốn làm. Nhưng cách khác là lặp qua chỉ số của vector duy nhất:

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

Hai giá trị này tương đương nhau, nhưng thứ hai sẽ cho phép bạn biết chỉ mục hiện tại (nếu bạn cần).

+0

Chúng có độ dài tương đương iff (a)> 0. –

Các vấn đề liên quan