2012-10-17 68 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