2013-06-03 12 views
5

Czekam na dopasowanie wielu kryteriów łańcucha, a następnie podzielenie wiersza w R, używając grepl, aby znaleźć dopasowanie. Znalazłem ładne rozwiązanie z another post gdzie jest używany jakiś specyficzny kod (ale masz pomysł): subset(GEMA_EO5, grepl(paste(l, collapse="|"),GEMA_EO5$RefSeq_ID))Dopasowywanie ciągów na dwóch kolumnach w [R]

Zastanawiam się, czy jest możliwe, aby Grepl w dwóch kolumnach, zamiast tylko RefSeq_ID w powyższym przykładzie. To znaczy, grepl za pomocą dowolnej innej metody. Innymi słowy, chciałbym szukać opcji w l, nie tylko w jednej kolumnie, ale w dwóch (lub w wielu). czy to możliwe?

np .: 3 kolumny, b i c. Chciałbym kryteria takie, że T (wiersze 3 i 4) jest wybrany, pomimo formatu "T I" w (3, b). powinien identyfikować zarówno (4, a), jak i (3, b), stąd link do poprzedniego pytania. Chcę, żeby wyglądała ona w kolumnie ORAZ kolumny b, a nie jednej lub drugiej.

a b  c 

    A A C P L 
    V V B W E E 
    W T I P J G 
    T W P J 
+0

Brzmi jak można po prostu użyć '|' połączyć wyniki wielokrotnych wezwań do 'grepl'. Możesz też stopić ramkę danych i przepuścić jeden. Czy masz bardziej konkretny przykład? – Peyton

+0

Możesz także po prostu wkleić kolumny razem. – Peyton

+0

@Peyton Edytowałem post, aby dołączyć przykład: – kirk

Odpowiedz

6

Oto niektóre dane demo, aby pokazać jak to działa:

set.seed(1234) 
dat <- data.frame(A = sample(letters[1:3],10,TRUE), 
        B = sample(letters[1:3],10,TRUE)) 

Korzystanie [ do podzbioru sprawia to dużo bardziej jasne moim zdaniem - możemy użyć grepl dać logiczną wektor oparty na dopasuj i użyj |, aby połączyć dwa testy (na wielu kolumnach). Jeśli chciał podzbiór wszystkich wierszy, które zawierało „a” albo kolumny:

dat.a <- dat[with(dat, grepl("a", A)|grepl("a", B)),] 
    A B 
1 b a 
2 b a 
3 a c 
5 a a 
9 a a 
+1

Dzięki, to działa, jeśli używam 'dat [z (dat, grepl (paste (l, collapse =" | "), df $ c | grepl (paste (l, collapse =" | "), df $ b)),] "aby uwzględnić rozstaw ciągów znaków – kirk

+0

gdzie l jest listą kryteriów ciągów do dopasowania, jak w połączonym wpisie w pytaniu – kirk

Powiązane problemy