2017-02-27 2 views
1

Ich versuche, eine Liste auf Basis von Sonderzeichen, die an die Elemente angehängt sind, zu unterteilen. Ich habe mehrere Ergebnisse gefunden, aber ich denke, mir fehlt das Verständnis darüber, wie man mit Sonderzeichen umgeht und Elemente findet, die Sonderzeichen enthalten. Ich möchte am Ende ein Ergebnis mit allen Elementen haben, die '**' enthalten. Ich schätze jede Hilfe und entschuldige mich, wenn es bereits eine ähnliche Frage gab, die ich nicht gefunden habe. Eine allgemeine Antwort auf den Umgang mit Sonderzeichen bei der Unterteilung einer Liste wird ebenfalls sehr geschätzt. Vielen Dank für Ihre Zeit.Wählen Sie Listenelement mit Sonderzeichen

Beispiel-Code:

x1 <- c('a**', 'b', 'c**') 
x2 <- c('d**', 'b', 'e**') 

y <- list(x1,x2) 

#Here are a couple of results i tried: 

grep('\\**', y, value =TRUE, ignore.case = TRUE) 

y[lapply(y, function(x) x[grep("[^\\**]", x),])] 

Filter(function(x) !any(grepl("[^\\**]", x)), y) 

y[y = "[^\\**]"] 
+3

'grep verwenden können ("\\ * \\ *", fehlende oder (y), Wert = TRUE)'. Du musst (\\\) es für jeden * –

+0

Vielen Dank! Das war sehr schnell! – Simon

+2

Oder 'grep (" \\ * {2} $ ", unlist (y), Wert = TRUE)' was ist einfacher, wenn Sie eine größere Anzahl von Wiederholungen haben und das Dollarzeichen am Ende der Zeichenfolge –

Antwort

1

Wir grep mit fixed=TRUE

grep("**", unlist(y), value = TRUE, fixed = TRUE) 
#[1] "a**" "c**" "d**" "e**" 
+2

Ich schätze Die Zeit, die Sie gebraucht haben, um meine Frage zu beantworten, aber ich bin nicht in der Lage, die Lösung zu verstehen, die Sie im Zusammenhang mit meiner Frage angegeben haben. Könnten Sie bitte weiter ausführen? – Simon

+0

@Simon Bitte überprüfen Sie die 'grep' Ausgabe. Ich denke, das ist, was Sie wollten> – akrun

+0

Danke. Die grep-Ausgabe funktioniert jedoch einwandfrei, die Teilzeichenfolge leider nicht zur Auswahl der Elemente. – Simon

Verwandte Themen