Comment inclure NA dans ifelse?

Je suis en train de créer une colonne ID basé sur la logique des déclarations pour les valeurs des autres colonnes. Par exemple, dans la suite de dataframe

test <- structure(list(time = c(10L, 20L, NA, 30L), type = structure(c(1L, 
2L, 3L, NA), .Label = c("A", "B", "C"), class = "factor"), ID = c(NA, 
"1", NA, NA)), .Names = c("time", "type", "ID"), row.names = c(NA, 
-4L), class = "data.frame")

qui ressemble

    time    type
1   10      A
2   20      B
3   NA      C
4   30      NA

Je veux faire une nouvelle colonne ID contenant une valeur de 1 pour tous les time qui ne sont pas NA et tous les type qui ne sont pas A. J'utilise le code suivant pour cette:

test$ID <- ifelse(is.na(test$time) | test$type == "A", NA, "1")

Cela donne le résultat que

    time    type    ID
1   10      A       NA
2   20      B       1
3   NA      C       NA
4   30      NA      NA

Toutefois, ce code ignore les NA dans la colonne typerésultant en une valeur de NA dans la colonne ID. J'ai besoin de cela pour être une valeur de 1, donc ma solution nécessaire devrait donner:

    time    type    ID
1   10      A       NA
2   20      B       1
3   NA      C       NA
4   30      NA      1

Quelqu'un peut-il me dire comment je pourrait le faire? J'ai pu obtenir que cela fonctionne avec mon code si je pouvais changer quelque chose à la suite de is.na(test$type) de retour FALSE au lieu de TRUEmais je ne suis pas sûr de la façon de le faire. Ou, peut-être la structure de mon code existant doit être entièrement changé? J'apprécie toute l'aide!

source d'informationauteur Thomas