名称重复时使用名称进行提取

时间:2016-08-03 08:21:52

标签: r extract data-manipulation

我遇到了这个挑战。名称中有重复时如何提取?

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 个答案:

答案 0 :(得分:2)

names中重复时提取:

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

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

请注意names是一个通用的访问器函数。您可以将names设置为任何内容,它实际上不必是唯一的。

答案 1 :(得分:1)

其他解决方案:

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

一般来说,最好有唯一的名字,所以 你可以毫无困惑地引用它们。 以下命令适合您。

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

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