grep()在数据框中有多个列名

时间:2018-06-01 15:44:05

标签: r dataframe match which

我有一个data.frame,有5786列。我想使用标题名称查找列位置,而不搜索colnames()的{​​{1}}。

我认为使用data.frame会起作用,但我发现同时给它多种模式并不适用。到目前为止,我想到了类似的东西,它不起作用:

grep()

有更简单的方法吗?也许使用 grep(c("NameA", "NameB", "NameC"), colnames(df)) 函数?

1 个答案:

答案 0 :(得分:0)

根据@joran的建议,可以使用match完成答案。应match条件筛选!is.na()的结果。

# Toy data frame
df <- data.frame(NameA = 1:5,
                 NameB = LETTERS[1:5],
                 NameC = letters[1:5],
                 NameD = letters[6:10])

# Find matched columns
which(!is.na(match(colnames(df), c("NameD", "NameB", "NameA"))))

#[1] 1 2 4