我有一个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]
的工作原理。我只是想知道是否有更有效的方法(在处理时间和代码量方面都很有效)。
答案 0 :(得分:3)
如果您确定至少有一列包含所有唯一值,请使用:
which.min(sapply(df,anyDuplicated))
它会返回
# key
# 3
答案 1 :(得分:1)
另一个base R
选项是Filter
names(Filter(Negate(anyDuplicated), df))[1]
#[1] "key"