setdiff удаляет элемент без причины в списке? - PullRequest
1 голос
/ 07 мая 2019

Дано:

doc1 <- "Hearty Chicken Chorizo, Kale, Bean and Farro Soup"

doc2 <- "Spinach, Ham and Egg Whites Frittata – 2 Points"

doc3 <- "Lentil Tabouli"

doc4 <- "Individual Brussels Sprout & Potato Frittatas"

doc5 <- "Ahi Tuna Stacks with Ginger-Soy Dressing"

doc6 <- "Sagebrush Annie's Ventura County Cabernet Sauvignon & Merlot Ventura County"

doc7 <- "Lentil Chili"

doc8 <- "Slow Cooker Lentil Stew with Sausage"

doc9 <- "Spicy Lentil and Swiss Chard Soup"

doc10 <- "Tofu-Spinach Lasagne"

doc11 <- "Baked Ziti with Spinach"

doc12 <- "Mushroom, Spinach and Cheddar Wraps"

doc13 <- "Jamaican Jerk Pork Roast – Low Carb & Whole 30"

doc14 <- "Tofu & Broccoli Quinoa Stir-Fry"

doc15 <- "Chicken Fajita Stuffed Peppers"

doc16 <- "SketchBook Pinot Noir Wine"

doc17 <- "Chicken and Vegetable Soup"

doc18 <- "Manhattan Crab Chowder"

doc19 <- "Waterbrook Reserve Chardonnay"

doc20 <- "Chinese Beef and Broccoli"

doc21 <- "Easy Crab Curry"

doc22 <- "Waterbrook Reserve Chardonnay"

# Search for all variables starting with doc and search by name of the objects, returning named list:

doc_list <- mget(ls(pattern = "^doc"))

И

query <- "Skinny Chicken Rolls"

Я хочу исключить запрос из списка L:

setdiff(L, query) но по какой-то причине он возвращает мне 21 элементов, учитывая, что query не существует в L.

Пожалуйста, сообщите, что мне здесь не хватает.

И по какой-то причине, если вы попробуете dput (doc_list), вы получите только половину элементов. Что здесь происходит?

1 Ответ

3 голосов
/ 07 мая 2019

У вас есть дублированные элементы в вашем входе. setdiff возвращает уникальные элементы (так как он смотрит на наборы). Таким образом, «запрос» ничего не удалил - вы просто получаете результат, который должен соответствовать unique(L), так как «Waterbrook Reserve Chardonnay» находится в вашем списке дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...