所以我已经找到了一些相关的主题,但不知何故未能将它们应用到我的案例中。其实我觉得这个很简单: 我正在尝试编写一个循环,它将显示给定数据框的每个变量的所有唯一值(我们称之为“数据”)。因此我试图应用unqiue()fct。以下是我认为它的解决方法:
i=0
for (name in names(data)) {i=i+1; print(get(paste0((unique(names(data)[i])))))}
猜猜我还没弄明白正确使用get / assign / paste。
有任何帮助吗?提前致谢
答案 0 :(得分:1)
如果你想写一个for循环来实现这个目的,你可以这样做:
for(name in names(data)) {
print(unique(data[, name]))
}
您还可以使用lapply
功能。 lapply(data, unique)
。
更新:apply
与lapply
之间的效果比较:
df <- data.frame(x = 1:1000, y = 1:1000, z = 1:1000)
microbenchmark(lapply(df, unique), apply(df, 2, unique), times = 10000)
Unit: microseconds
expr min lq mean median uq max neval
lapply(df, unique) 41.874 47.211 69.87959 51.317 55.832 10405.64 10000
apply(df, 2, unique) 163.390 178.580 241.17553 187.201 209.370 11389.26 10000