【发布时间】:2019-11-18 09:39:04
【问题描述】:
我有一个数据框和一个向量,如果值出现在向量中,我想将数据框拆分为多个列表。
例如,这里是向量:
foods_to_serve <- c("Sweets", "Bitter")
这是数据框:
library(tidyverse)
problem <- tibble(name = c("Angela", "Claire", "Justin", "Rachel"),
favfood1 = c("Sweets", "Salty", "Sweets", "Salty"),
favfood2 = c("Bitter", "Sweets", "Salty", NA),
favfood3 = c("Salty", NA, NA, NA),
hunger = c("high", "high", "low", "low"))
我希望 R 将其拆分为仅包含食物供应列表中出现的食物的列表。此外,人们可以在多个列表中,有些人可能会被完全排除在外。
更具体地说,我会得到一个如下所示的列表:
[1]
Food_to_serve name hunger
Sweets Angela high
Sweets Claire high
Sweets Justin low
[2]
Food_to_serve name hunger
Bitter Angela high
我知道我可以使用 split(),但我不确定如何让它遍历这些不同的列。我认为我可能需要使用 purrr 中的 pmap 函数,但我不确定。如果某样东西是他们最喜欢的食物,我不介意最终列表是否保留,但我确实需要它将其余信息包含在原始数据框中。如果可能的话,一个整洁的解决方案将不胜感激。
我也尝试过使用 %in%,但我也不知道如何让它遍历多个列。
【问题讨论】: