【发布时间】:2021-07-28 23:56:49
【问题描述】:
我有一个带有 id 列和一个 eats 列的数据框,以及一个单独的食物列表。我想处理数据框,以便为食物列表中的每种食物添加一列,如果食物存在于吃中,则填充为 1,否则为 0。
txt <- tibble(id = c(1, 2, 3),
eats = c("apple, oats, banana, milk, sugar",
"oats, banana, sugar",
"chocolate, milk, sugar"))
food_list <- c("apple", "oats", "chocolate")
for (i in food_list){
print(i)
txt <- txt %>%
mutate(!!i := if_else(stringr::str_detect(eats, i), 1, 0))
}
我可以使用 for 循环来做到这一点,但在没有循环的情况下很难做到这一点。如果有人能指出如何在不使用 for 循环而是使用 purrr 库映射函数的情况下完成此操作,我将不胜感激。
谢谢!
【问题讨论】: