2012-04-09 16 views
4

Ich habe eine data.frame mit row.names wie im Test.Auswählen von Zeilen in data.frame basierend auf Zeichenfolgen

test <- 
c("Env_1990:trait_KPS", "Env_1990:trait_SPSM", "Env_1990:trait_TKW", 
"Env_1990:trait_Yield", "Env_1991:trait_KPS", "Env_1991:trait_SPSM", 
"Env_1991:trait_TKW", "Env_1991:trait_Yield", "Env_1992:trait_KPS", 
"Env_1992:trait_SPSM", "Env_1992:trait_TKW", "Env_1992:trait_Yield", 
"Env_1993:trait_KPS", "Env_1993:trait_SPSM", "Env_1993:trait_TKW", 
"Env_1993:trait_Yield", "Env_1994:trait_KPS", "Env_1994:trait_SPSM", 
"Env_1994:trait_TKW", "Env_1994:trait_Yield", "Env_1995:trait_KPS", 
"Env_1995:trait_SPSM", "Env_1995:trait_TKW", "Env_1995:trait_Yield", 
"Gen_B88:Env_1990:trait_KPS", "Gen_B88:Env_1990:trait_SPSM", 
"Gen_B88:Env_1990:trait_TKW", "Gen_B88:Env_1990:trait_Yield", 
"Gen_B88:Env_1991:trait_KPS", "Gen_B88:Env_1991:trait_SPSM", 
"Gen_B88:Env_1991:trait_TKW", "Gen_B88:Env_1991:trait_Yield", 
"Gen_B88:Env_1992:trait_KPS", "Gen_B88:Env_1992:trait_SPSM", 
"Gen_B88:Env_1992:trait_TKW", "Gen_B88:Env_1992:trait_Yield", 
"Gen_B88:Env_1993:trait_KPS", "Gen_B88:Env_1993:trait_SPSM", 
"Gen_B88:Env_1993:trait_TKW", "Gen_B88:Env_1993:trait_Yield") 

Ich möchte nur die Zeilen auszuwählen, die mit Env_ starten. Ich habe versucht, diesen Code in R

grep(pattern="[Env_]", x=test). 

Dieser Code mir alle Zeilen gibt, weil Env_ in jeder Zeile Name erscheint. Ich frage mich, wie man Zeilen auswählt, die nur mit Env_ beginnen. Vielen Dank im Voraus für Ihre Hilfe.

+0

[Env_] ist eine Zeichenklasse. Es entspricht einer beliebigen Zeichenfolge, die eines der einzelnen Zeichen E, n, v oder _ enthält. –

Antwort

12

Sie wollen die ^ Zeichen für Zeilenanfang/string hinzuzufügen:

> grep("^Env_", test) 
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 
> grep("^Env_", test, value = TRUE) 
[1] "Env_1990:trait_KPS" "Env_1990:trait_SPSM" "Env_1990:trait_TKW" 
[4] "Env_1990:trait_Yield" "Env_1991:trait_KPS" "Env_1991:trait_SPSM" 
[7] "Env_1991:trait_TKW" "Env_1991:trait_Yield" "Env_1992:trait_KPS" 
[10] "Env_1992:trait_SPSM" "Env_1992:trait_TKW" "Env_1992:trait_Yield" 
[13] "Env_1993:trait_KPS" "Env_1993:trait_SPSM" "Env_1993:trait_TKW" 
[16] "Env_1993:trait_Yield" "Env_1994:trait_KPS" "Env_1994:trait_SPSM" 
[19] "Env_1994:trait_TKW" "Env_1994:trait_Yield" "Env_1995:trait_KPS" 
[22] "Env_1995:trait_SPSM" "Env_1995:trait_TKW" "Env_1995:trait_Yield" 
+0

Danke für Ihre nette und hilfreiche Antwort. Würde mich freuen, wenn Sie mir auch mitteilen, wie Sie nur die Zeilen auswählen, in denen Env_ in der Mitte erscheint. Danke – MYaseen208

+0

Froh, zu helfen. Für diese "Env_" in der Mitte scheint es, dass sie immer nach einem ':' kommen, also könnte dein Muster ": Env_" sein. Ein allgemeineres Muster, das "Env_" nach jedem Zeichen entspricht, ist ". + Env_". – flodel

Verwandte Themen