2017-12-06 5 views
0
bestimmte Werte entfernen

Ich habe einen Vektor mit einigen Zeichen:von einem Vektor

Die Struktur glimpse(a)

List of 5 
$ : chr [1:2] "Thai" "Restaurants" 
$ : chr [1:2] "Vietnamese" "Restaurants" 
$ : chr [1:3] "Restaurants" "Vegetarian" "Indian" 
$ : chr [1:5] "Nightlife" "Bars" "Restaurants" "Thai" ... 
$ : chr [1:4] "Asian Fusion" "Chinese" "Japanese" "Restaurants" 

hier ein dput(a) ist

list(c("Thai", "Restaurants"), c("Vietnamese", "Restaurants"), 
    c("Restaurants", "Vegetarian", "Indian"), c("Nightlife", 
    "Bars", "Restaurants", "Thai", "Sports Bars"), c("Asian Fusion", 
    "Chinese", "Japanese", "Restaurants")) 

ich durch Ausschluss einige Werte fallen wollen . Zum Beispiel sind die folgenden Werte die einzigen Werte, die im Vektor bleiben sollten. Alle anderen Werte sollten ohne Ersatz entfernt werden.

c("Chinese", "Japanese", "Sushi Bars", "Indian", "Thai", "Vietnamese", "Korean","Taiwanese", "Malaysian", "Mongolian", "Indonesian", "Laotian", "Myanmar", "Pan Asian", "Tempura", "Wok") 

Also habe ich versucht, die Lösung aus diesem Beitrag: How to delete multiple values from a vector?

Also habe ich:

rm <- c("Chinese", "Japanese", "Sushi Bars", "Indian", "Thai", "Vietnamese", "Korean","Taiwanese", "Malaysian", "Mongolian", "Indonesian", "Laotian", "Myanmar", "Pan Asian", "Tempura", "Wok") 

a [! a %in% rm] 

Aber nichts ändert?!. Anny Idee, wie man diese Werte von a zu entfernen, das gehört nicht zu rm

Antwort

2

Wir können eine setdiff tun, wenn die Elemente unique durch Schleifen über die list Elemente mit lapply

lapply(a, setdiff, rm) 

sind Oder verwenden %in% und dann negieren

lapply(a, function(x) x[!x %in% rm]) 
+0

Ich möchte das Gegenteil von dem, was Ihr Code tut. Aber wenn ich das '!' Von der zweiten ablege, funktioniert es gut! – Banjo

+2

oder versuchen Sie diese 'Bibliothek (Tidyverse); a%>% map (Funktion (x) x [! x% in% rm]) ' – Jimbou

Verwandte Themen