【问题标题】:setdiff removes element without reason in a list?setdiff 在列表中无故删除元素?
【发布时间】:2019-05-07 14:19:31
【问题描述】:

给定:

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),您将只能获得一半的元素。这是怎么回事?

【问题讨论】:

  • 没有列表L...你的意思是doc_list
  • @Sotos,作为答案发布/解释哪些参数是矢量化的,哪些不是?
  • @SteveS - dput(doc_list) 没有删除任何元素。继续并使用该输出创建一个新对象。你会看到它仍然有 22 个元素。

标签: r list set-difference


【解决方案1】:

您的输入中有重复的元素。 setdiff 返回唯一元素(因为它正在查看集合)。所以“查询”并没有删除任何东西——你只是得到了应该匹配 unique(L) 的输出,因为“Waterbrook Reserve Chardonnay”在你的列表中出现了两次。

【讨论】:

  • 哦,不用申请了吧?
  • 正确 - 无需申请,因为 setdiff 在列表上可以正常工作。如果您使用他们的原始输入,您可以对其进行测试:setdiff(doc_list, c("Lentil Chili", "Easy Crab Curry"))
  • 需要注意的是,如果您的列表实际上包含长度大于 1 的向量,它确实会变得更加复杂。在这种情况下,您可能需要采取 lapply 路线。或者更努力地思考你想要实现的目标。
猜你喜欢
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
  • 2015-08-03
  • 2019-04-06
  • 2014-12-19
相关资源
最近更新 更多