2016-03-30 23 views
0

Büyük bir matrisin dizinlerini, iki ayrı dizgiyi ayırma temelinde ayıklamaya çalışıyorum.R'nin grep sürümünde dönüşüm elde etmenin en iyi yolu?

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") 

bu işin ikisi:

Bir örnek matris gibi görünebilir

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

Ben çalışmak bu isterdim ama öyle değil:

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

Her iki grevi toplamanın en kolay yolu sadece onları bir vektörle birleştirmek mi, yoksa grep fonksiyonu içinde yapabileceğimiz bir şey var mı ?:

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

bu yardımı yapar mı? http://stackoverflow.com/questions/33695462/r-filter-a-column-which-contains-several-keywords – rawr

+4

Bence @rawr'nin bunun daha önce sorulmuş olduğunu ve sizin durumunuzda olduğunu grep ("mektup | durum", colnames (a)) 'çalışırdı. – RHertel

cevap

3

Uygun düzenli ifadeyi kullanın? grep("letter|status", colnames(a))

+6

Yakalama gruplarını kullanmanız gerekmez: grep ("letter | status", colnames (a)) – Jota

İlgili konular