2012-12-17 214 views
6

是否可以編寫具有離散級別的for循環?For循環遍歷唯一值

我有以下形式的向量:

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

它是一個遞增系列但不遵循任何邏輯順序;

我想使用循環水平(一)作爲參數運行:

for i in 1:levels(a) 

我收到以下錯誤:

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

回答

14

您最初的錯誤是,你是在混淆循環遍歷索引並循環遍歷矢量的元素。

如果你要循環的載體的獨特的元素,然後使用:

for(i in unique(a)) 

我認爲這是你想要做什麼。但另一種選擇是循環在獨特的矢量指數:

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

這兩者是等價的,但第二個將讓您知道當前的指數以及(如果你需要它)。

+0

如果長度(a)> 0,它們是等效的。 –