2016-08-03 39 views
1

我遇到了这个问题。如何提取名称中有重复的情况?名称重复时提取姓名

X <- 1:5 
names(X) <- c(letters[1:4], "a") 
X 
a b c d a 
1 2 3 4 5 
names(X) 
[1] "a" "b" "c" "d" "a" 

X["a"] 
a 
1 

回答

2

要提取时,有重复在names

X[names(X) %in% "a"] 
# a a 
# 1 5 

为什么对由R接受重复的名字?

请注意,names是一个通用的存取函数。你可以设置一个names任何东西,它并不一定是唯一的。

1

其他的解决方案:

X[grepl("a", names(X))] 
X[names(X) == "a"] 

而且一般来说,最好是有唯一的名字,所以 您可以参考它们不会产生混淆。 以下命令为您完成。

make.unique(names(X)) 
[1] "a" "b" "c" "d" "a.1" 

BTW第一我上面提出的解决方案中,仍然会选择 所有包含a列。