2016-03-30 2 views
0

Я пытаюсь извлечь индексы большой матрицы на основе grepping двух отдельных строк.Лучший способ добиться чередования в версии R grep?

Пример матрица может выглядеть следующим образом:

a=as.matrix(c("a","b","c")) 
a=cbind(a,c("yes", "no", "maybe")) 
rownames(a)=c("one", "two","three") 
colnames(a)=c("letter", "status") 

Оба эти работы:

grep("letter", colnames(a)) 
grep("status", colnames(a)) 

я хотел, чтобы это работало, но это не делает:

grep("letter"|"status", colnames(a)) 

Самый простой способ собрать как grep просто конкатенирование их в вектор, или что-то, что мы можем сделать в функции grep ?:

cols_to_get= c(grep("letter", colnames(a)), grep("status", colnames(a))) 
+3

это помогает? http://stackoverflow.com/questions/33695462/r-filter-a-column-which-contains-several-keywords – rawr

+4

Я думаю, что это указывает, что это уже было задано раньше, и что в вашем случае ' grep («letter | status», colnames (a)) 'будет работать. – RHertel

ответ

3

Использовать правильное регулярное выражение? grep("letter|status", colnames(a))

+6

Вам не нужно использовать группы захвата: 'grep (« letter | status », colnames (a))' – Jota

Смежные вопросы