2016-03-22 8 views
1

Ich möchte Elemente von x2 auswählen, die mit Loc beginnen. Ich weiß nicht, was ich hier falsch mache. Jede Hilfe wird sehr geschätzt. DankeElemente extrahieren, die mit einem bestimmten Muster beginnen in R

x2 <- c("(Intercept)", "Conc", "LocKhanewal", "LocLAB-PK", "LocLayyah", 
     "LocMultan", "LocToba Tek Singh", "LocVehari", "Conc:LocKhanewal", 
     "Conc:LocLAB-PK", "Conc:LocLayyah", "Conc:LocMultan", "Conc:LocToba Tek Singh", 
     "Conc:LocVehari") 
x2 

[1] "(Intercept)"   "Conc"     "LocKhanewal"   "LocLAB-PK"    
[5] "LocLayyah"    "LocMultan"    "LocToba Tek Singh"  "LocVehari"    
[9] "Conc:LocKhanewal"  "Conc:LocLAB-PK"   "Conc:LocLayyah"   "Conc:LocMultan"   
[13] "Conc:LocToba Tek Singh" "Conc:LocVehari" 

grepl("^Loc.$", x2) 
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 

Allerdings funktioniert der gleiche Code hier gut.

x1 <- c("(Intercept)", "Conc", "TypeB", "TypeC", "Conc:TypeB", "Conc:TypeC") 

x1 
[1] "(Intercept)" "Conc"  "TypeB"  "TypeC"  "Conc:TypeB" "Conc:TypeC" 

grepl("^Type.$", x1) 
[1] FALSE FALSE TRUE TRUE FALSE FALSE 
+0

Sie brauchen '*' 'grepl ("^Loc. * $ ", X2)'. Im zweiten Fall gibt es nur ein einzelnes Zeichen nach "Typ", so dass es in den angezeigten Daten funktioniert, aber mit "Loc" als Präfix gibt es mehr als ein Zeichen. – akrun

+0

Danke @akrun. Würde es Ihnen etwas ausmachen, Ihren Kommentar zu ändern, um mit einer Erklärung zu antworten? Danke – MYaseen208

+0

Danke, fügte hinzu, dass als Lösung – akrun

Antwort

2

Wir brauchen .* verwenden, bis zum Ende ($) der Zeichenkette alle Zeichen übereinstimmen. Im zweiten Fall (glücklicherweise oder unglücklicherweise) haben wir nur ein einziges Zeichen nach "Typ". Also gibt grep TRUE-Ausgabe für diese. Für "Loc" ist es anders, es hat mehrere Zeichen

grepl("^Loc.*$", x2) 
#[1] FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE