我知道有一个函数unique()
从向量中提取唯一值。但我失去了名字。
实施例
vector = c("A" = 1, "B" = 2, "A" = 1, "C" = 3, "B" = 2, "D" = 3, "D" = 3)
如果我打印,我应该看到:
A B A C B D D
1 2 1 3 2 3 3
预期输出:
A B C D
1 2 3 3
尝试:
如果我使用:unique(vector)
我只会1 2 3
如果我使用:vector[!duplicated(vector)]
我得到:
A B C
1 2 3
这很接近,但遗漏了"D" = 3
。
答案 0 :(得分:2)
vector = c(A=1,B=2,A=1,C=3,B=2,D=3,D=3)
当你这样做时,
vector[!duplicated(vector)]
它会查找vector
值的重复项而不是名称,因此您得到的输出是
A B C
1 2 3
如果您想查找唯一的名称,那么您应该在duplicated
names
上运行vector
功能
vector[!duplicated(names(vector))]
A B C D
1 2 3 3
使用unique
vector[unique(names(vector))]
A B C D
1 2 3 3
答案 1 :(得分:1)
我们可以使用match
vector[match(unique(names(vector)), names(vector))]
# A B C D
# 1 2 3 3
或tapply
tapply(vector, names(vector), FUN = head, 1)
# A B C D
# 1 2 3 3
或使用data.table
library(data.table)
data.table(Key = names(vector), Value = c(vector))[, Value[1L], Key]
答案 2 :(得分:1)
添加另一个替代方案,也可能包含值和名称之间的差异
library(dplyr)
data_frame(value = v, name = names(v)) %>%
group_by(name, value) %>% # alternatively: group_by(name) if name value pair is always unique
slice(1) %>%
ungroup()