2016-10-25 6 views
0

Ich habe eine lange Liste von Wörtern, von denen einige leere Zeichenfolgen sind. Dies ist Teil der Liste.Entfernen von leeren Wörtern in einer Liste in R

17`[[95]] 
[1] "while"  ""   "however" ""   "the"  "right"     "is"  "unsettled" 
[9] ""   "we"  "have"  "avoided" "changing" "the"   "state" 

17`[[96]] 
[1] "of"   "things"  "by"   "taking"  "new"   "posts"   
[7] "or"   "strengthening" "ourselves"  "in"   "the"   "disputed" 

Ich versuche, die leeren Zeichenfolgen in jedem Element der Liste loszuwerden. Ich weiß nicht, wie dies mit regulären Ausdrücken zu tun, und kann nicht verstehen, warum die lapply folgenden funktioniert auch nicht:

new_list = lapply(list, function(x) x = x[x != ""]) 

Sie richtig helfen kann den Code? Weißt du auch, wie man regexp dafür benutzt? Vielen Dank.

+3

Sie müssen die geänderten 'x' Objekt zurückzukehren verwendet werden -' lapply (L , function (x) {x <- x [x! = ""]; x}) '' Regex' zu verwenden, um nach einem leeren Objekt zu suchen, erscheint mir als Overkill. – thelatemail

+0

@thelatemail hat nicht funktioniert. Es ist die gleiche Ausgabe wie zuvor. Was, wenn jedes Element, das ich oben gedruckt habe, eine Liste ist? Dh das ist eine Liste von Listen. Könnte das das Problem sein? – Ali

+0

Aus diesem Grund ist es hilfreich, ein reproduzierbares Beispiel zu geben. Sind Ihre Daten etwas wie 'L <- liste (c (" eins "," "," zwei ")), liste (c (" "," hier "," ist es "))))? – thelatemail

Antwort

1

Wir verwenden grep

lapply(list, function(x) lapply(x, grep, pattern = "^$", value = TRUE, invert = TRUE)) 

Oder wie @thelatemail die rekursive erwähnt gelten (rapply) kann

rapply(list, grep, pattern = "^$", value = TRUE, invert= TRUE, how = "list") 
+0

Hat nicht funktioniert. Es ist die gleiche Ausgabe wie zuvor. Was, wenn jedes Element, das ich oben gedruckt habe, eine Liste ist? Dh das ist eine Liste von Listen. Könnte das das Problem sein? – Ali

+0

@Ali Das könnte der Fall sein. Ansonsten sollte es funktionieren – akrun

+0

@Ali Ich habe den Code geändert. Überprüfen Sie, ob das funktioniert – akrun

Verwandte Themen