2012-10-17 122 views
1

我有一個很大的數據框,我試圖運行一個for loop,但需要首先獲取所有不同的觀測值。我目前想方法的過程是這樣的:在R中,如何返回觀察組,而不是觀察次數?

  1. 創建列表/矢量/數據的觀察
  2. 使用在for loop

每個觀察幀這是我如何解決它:

產生一些數據:

x <- gl(12,5) 

我l本結果ooking的是所有不同意見的清單:

1 2 3 4 5 6 7 8 9 10 11 12 

我可以創建一個data frame,再滴數列是這樣的:

list <- data.frame(table(x)) 

list[,2] <- NULL 

print(list) 

從這個列表/矢量/數據幀,我會跑通過for loop像這樣:

for (i in list) print(i) 

必須有一個更有效的方式來獲取列表爲for loop。有人可以建議嗎?

+0

「plyr」非常適合這項任務。您剛纔描述了拆分應用策略。 – Maiasaura

回答

4

幾個選項包括:如果您希望集團

R> unique(x) 
[1] 1 2 3 4 5 6 7 8 9 10 11 12 
Levels: 1 2 3 4 5 6 7 8 9 10 11 12 
R> levels(x) 
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" 
R> as.numeric(levels(x)) 
[1] 1 2 3 4 5 6 7 8 9 10 11 12 

levels()的人是最合理和適當的。

現在你是否真的想要這是另一個問題。參見?split,其可以基於因子(其可以在lapply()以上)或?aggregate等等來分割數據幀。還有一種看起來非常受歡迎的軟件包,包括plyr