add valor perdido basado en el valor de la columna en r

Este es mi conjunto de datos de muestra:

   vector1 <-
      data.frame(
        "name" = "a",
        "age" = 10,
        "fruit" = c("orange", "cherry", "apple"),
        "count" = c(1, 1, 1),
        "tag" = c(1, 1, 2)
      )
    vector2 <-
      data.frame(
        "name" = "b",
        "age" = 33,
        "fruit" = c("apple", "mango"),
        "count" = c(1, 1),
        "tag" = c(2, 2)
      )
    vector3 <-
      data.frame(
        "name" = "c",
        "age" = 58,
        "fruit" = c("cherry", "apple"),
        "count" = c(1, 1),
        "tag" = c(1, 1)
      )

    list <- list(vector1, vector2, vector3)
    print(list)

Esta es mi prueba:

default <- c("cherry",
       "orange",
       "apple",
       "mango")

for (num in 1:length(list)) {
  #print(list[[num]])

  list[[num]] <- rbind(
    list[[num]],
    data.frame(
      "name" = list[[num]]$name,
      "age" = list[[num]]$age,
      "fruit" = setdiff(default, list[[num]]$fruit),#add missed value
      "count" = 0,
      "tag" = 1 #not found solutions
    )
  )

  print(paste0("--------------", num, "--------"))
  print(list)
}
#print(list)

Estoy tratando de encontrar qué fruta falta en el marco de datos y la fruta se basa en el valor de la etiqueta. Por ejemplo, en el primer marco de datos, hay etiquetas 1 y 2. Si el valor de la etiqueta 1 no tiene la fruta predeterminada, como la manzana y el plátano, la fruta predeterminada omitida se agregará a 0 al marco de datos. El formato de expectativa le gusta lo siguiente:

[[1]]
  name age  fruit count tag
1    a  10 orange     1   1
2    a  10 cherry     1   1
3    a  10  apple     1   2
4    a  10  mango     0   1
5    a  10  apple     0   1
6    a  10  mango     0   2
7    a  10  orange    0   2
8    a  10  cherry    0   2

Cuando verifico el proceso del bucle, también encuentro que el primer bucle agrega mango 3 veces y no encuentro la razón por la que no puede agregar el valor perdido de una sola vez. La salida general le gusta lo siguiente:

[[1]]
  name age  fruit count tag
1    a  10 orange     1   1
2    a  10 cherry     1   1
3    a  10  apple     1   2
4    a  10  mango     0   1
5    a  10  mango     0   1
6    a  10  mango     0   1

[[2]]
  name age  fruit count tag
1    b  33  apple     1   2
2    b  33  mango     1   2
3    b  33 cherry     0   1
4    b  33 orange     0   1

[[3]]
  name age  fruit count tag
1    c  58 cherry     1   1
2    c  58  apple     1   1
3    c  58 orange     0   1
4    c  58  mango     0   1

¿Alguien me ayuda y proporciona métodos simples u otras formas? ¿Debo usar la función sqldf para agregar valor 0? ¿Es esta una forma simple de resolver mis problemas?

Respuestas a la pregunta(3)

Su respuesta a la pregunta