2017-07-13 3 views
0

Ich habe eine Liste von 1000 Booleschen Listen, die das Ergebnis einer duplizierten() Überprüfung der ursprünglichen Zahlenlisten ist. Ich muss, welche dieser Listen enthält ein TRUE Ergebnis finden, und ich muss die Position der Liste wissen, wo es in der 1000 erscheint also kann ich dannPrüfe Elemente einer Liste

my.list[[456]] 
[1] FALSE FALSE FALSE TRUE FALSE 

geben und diese dann verwenden Sie die Elemente aus löschen Meine Liste, wo ein WAHR erscheint

+2

Versuchen Sie 'lapply (my.list, which)'. – www

+0

Von Ihrem Codeabschnitt scheint es, dass Sie keine Liste mit booleschen Listen haben, sondern eine Liste boolescher Vektoren. Dies ist eine wichtige Unterscheidung. – lmo

Antwort

2
# An example 
l <- list(c(TRUE, FALSE), c(FALSE, FALSE), c(FALSE)) 
# The indices you want 
l2 <- lapply(l, which) 
# The number of TRUEs for each element of l 
l3 <- lengths(l2) 
# The initial list, without the elements containing a TRUE 
l4 <- l[l3 == 0] 
+2

Auch gut 'sapply (l, any)', 'l4 <- l [! Sapply (l, any)]' – Gregor

+0

@Gregor Mein Verstand ging zu 'any' auch und imo ist es der bessere Weg, da es genauer widerspiegelt die Absicht des Codes. – Dason

Verwandte Themen