所以我有一个数据集(状态) - 事实上是内置的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=)?
为什么会出现此错误?我该如何解决这个问题?
谢谢!
答案 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)