【发布时间】:2016-05-20 14:13:02
【问题描述】:
所以我已经找到了一些相关的主题,但不知何故未能将它们应用到我的案例中。其实我觉得这个很简单: 我正在尝试编写一个循环,它将向我显示给定数据帧的每个变量的所有唯一值(我们称之为“数据”)。因此,我正在尝试应用 unqiue() fct。以下是我认为的解决方法:
i=0
for (name in names(data)) {i=i+1; print(get(paste0((unique(names(data)[i])))))}
我猜我还没有弄清楚 get/assign/paste 的正确用法。
有什么帮助吗?提前致谢
【问题讨论】:
-
apply(data, 2, unique) -
完美,谢谢!由于我已经有一段时间没有使用 R 了,所以我忘记了 apply()。但是,据我了解, ?apply 此解决方案仅限于一次应用一个功能(对吗?)。如果例如我想查看的不是唯一条目本身,而只是每个变量的唯一条目数,我需要类似 length(unique(...)) 之类的东西,它不能使用 apply() 来执行,对吧?然后我必须选择来自 Psidom 的
code for(name in names(data)) {print(length(unique(data[, name])))}。 -
apply(data, 2, function(i) length(unique(i)) -
您可以使用
apply或lapply应用多个函数。示例:lapply(data, function(i) { list(n=length(i), n_distinct=length(unique(i)), unique_values=unique(i)) })或apply(data, 2, function(i) { list(n=length(i), n_distinct=length(unique(i)), unique_values=unique(i)) })