使用lapply()查看每个变量的唯一值

时间:2017-12-15 05:39:20

标签: r lapply

所以我有一个数据集(状态) - 事实上是内置的R数据集。

国家有9个变量。

> names(states)
[1] "Population" "Income"     "Illiteracy" "Life.Exp"   "Murder"     
"HS.Grad"    "Frost"      "Area"      
[9] "Region" 

我有兴趣看到每个变量中的唯一级别。

对于一个变量,我可以做

> unique(states$Region)
[1] South         West          Northeast     North Central
Levels: Northeast South North Central West

如何为所有9个变量重复此过程?

> unique <- function(var){
+   unique(states$var)
+ }
> lapply(names(states),unique)

Error: evaluation nested too deeply: infinite recursion / 
options(expressions=)?
Error during wrapup: evaluation nested too deeply: infinite recursion / 
options(expressions=)?

为什么会出现此错误?我该如何解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用apply

apply(states,2,unique)

答案 1 :(得分:0)

请注意apply和lapply返回的值的差异,这可能是一个问题。使用lapply(由Ronak Shah建议)将为您提供一个列表并保留变量的类。如果你的一个变量是一个字符,则apply的结果(如axiom所示)可能会产生一个字符列表。以下是钻石数据的示例(仅前10行)。如果您希望获得具有类似类对象的列表,我建议您申请;否则,lapply会更方便。

df = diamonds[1:10 , ]
apply(df, 2, unique)
lapply(df, unique)