首页 > 解决方案 > R for 循环结果

问题描述

我需要将循环的结果存储在数据框中,但我无法弄清楚。我得到了循环工作,如下所示。

Pasta_pesto <- list(ingredienten = c("spaghetti","basilicum","pijnboompitten","pesto"))
Broccoli_spinaziesoep <- list(ingredienten = c("broccoli", "spinazie"))
Romige_kipcurry <- list(ingredienten = c("zilvervliesrijst", "sperziebonen", "kip", "curry"))

recepten <- list(Pasta_pesto, Broccoli_spinaziesoep, Romige_kipcurry)

food_box <- list("spaghetti", "pesto", "kip", "curry")

for (i in recepten) {
   for (e in i) {
      for (j in e) {
          for (k in food_box) {
            if (k == j){
            print(c("true", j, k))
          }
            else {
            print(c("false", j, k))}}}}}

现在它打印出 true 或 false 但最终结果应该是一个包含以下列的表格:recepten,每个接收的 true 计数,recept 列表中的总项目。如您所见,必须计算和存储真实的数量。

我希望你们中的任何人都可以帮助我。

标签: rloops

解决方案


没有找到单词时出现错误已修复

library(tidyverse)

Pasta_pesto <- list(Pasta_pesto = c("spaghetti","basilicum","pijnboompitten","pesto"))
Broccoli_spinaziesoep <- list(Broccoli_spinaziesoep = c("broccoli", "spinazie"))
Romige_kipcurry <- list(Romige_kipcurry = c("zilvervliesrijst", "sperziebonen", "kip", "curry"))

recepten <- list(Pasta_pesto, Broccoli_spinaziesoep, Romige_kipcurry)

food_box<- list("spaghetti", "pesto", "kip", "curry", "basilicum", "pijnboompitten")

operation <- function(x,y){
  count_ingredients <- length(x)
  ingredient_in_food_box  <- x %in% y
  count_of_true <-  ingredient_in_food_box %>% sum
  missing_ingredients <- x[!ingredient_in_food_box] %>% str_flatten(collapse = "_") %>% list
  list(count_ingredients = count_ingredients,
       count_of_true = count_of_true,
       which_ingredient =  missing_ingredients)

}

recepten %>%
  flatten() %>% 
  map_dfr(~ operation(.,food_box),.id = "receipen") %>% 
  mutate(show = which_ingredient %>% as.character())
#> # A tibble: 3 x 5
#>   receipen       count_ingredien… count_of_true which_ingredient show           
#>   <chr>                     <int>         <int> <list>           <chr>          
#> 1 Pasta_pesto                   4             4 <chr [0]>        character(0)   
#> 2 Broccoli_spin…                2             0 <chr [1]>        broccoli_spina…
#> 3 Romige_kipcur…                4             2 <chr [1]>        zilvervliesrij…

reprex 包(v0.3.0)于 2020 年 1 月 15 日创建


推荐阅读