循环通过变量名称向量并应用函数(在R中)

时间:2016-05-20 14:13:03

标签: r loops names

所以我已经找到了一些相关的主题,但不知何故未能将它们应用到我的案例中。其实我觉得这个很简单: 我正在尝试编写一个循环,它将显示给定数据框的每个变量的所有唯一值(我们称之为“数据”)。因此我试图应用unqiue()fct。以下是我认为它的解决方法:

i=0 
for (name in names(data)) {i=i+1; print(get(paste0((unique(names(data)[i])))))}

猜猜我还没弄明白正确使用get / assign / paste。

有任何帮助吗?提前致谢

1 个答案:

答案 0 :(得分:1)

如果你想写一个for循环来实现这个目的,你可以这样做:

for(name in names(data)) {
    print(unique(data[, name]))
}

您还可以使用lapply功能。 lapply(data, unique)

更新applylapply之间的效果比较:

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