查找具有所有唯一值的data.frame的第一列的最优雅方法是什么?

时间:2018-02-10 03:48:26

标签: r dataframe key unique

我有一个data.frame,可能包含任意数量的列和值。我需要找到具有所有唯一值的第一列(从lhs开始)的名称。 e.g:

df <- data.frame(char = c("a", "b", "b"),
                 num = c(1.1, 2.2, 2.2),
                 key = c(1, 2, 3),
                 key2 = c("a", "b", "c"))

最终解决方案应该是:&#34; key&#34;

我的解决方案:

  keys <- df[purrr::map_lgl(df, ~ !any(duplicated(.)))] 
  names(keys)[1]

的工作原理。我只是想知道是否有更有效的方法(在处理时间和代码量方面都很有效)。

2 个答案:

答案 0 :(得分:3)

如果您确定至少有一列包含所有唯一值,请使用:

which.min(sapply(df,anyDuplicated))

它会返回

# key 
#   3 

答案 1 :(得分:1)

另一个base R选项是Filter

names(Filter(Negate(anyDuplicated), df))[1]
#[1] "key"