我有一个大型数据框,我试图运行for loop
,但需要先获取所有不同的观察结果。我目前正在尝试处理的过程是这样的:
for loop
以下是我如何处理它:
生成一些数据:
x <- gl(12,5)
我要找的结果是所有不同观察的列表:
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 :(得分: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 包,它似乎非常受欢迎。