From 0be0d8b7f9b627bb3ffa82bb0b765ff448bbb55d Mon Sep 17 00:00:00 2001 From: Rosemary Li Date: Mon, 12 Feb 2024 03:24:55 +0000 Subject: [PATCH] use mapply to replace nested if else --- R/calculate_study_day.R | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/R/calculate_study_day.R b/R/calculate_study_day.R index f50cbaa5..6235fcb8 100644 --- a/R/calculate_study_day.R +++ b/R/calculate_study_day.R @@ -124,15 +124,14 @@ calculate_study_day <- function(sdtm_in, refdt_vector <- sdtm_in[[refdt]] tgdt_vector <- sdtm_in[[tgdt]] - res <- ifelse( - test = refdt_vector <= tgdt_vector, - yes = refdt_vector - tgdt_vector + 1L, - no = ifelse( - test = refdt_vector > tgdt_vector, - yes = tgdt_vector - refdt_vector, - no = NA - ) - ) + dy_cal_func <- function(ref, tgt) { + if (is.na(ref) || is.na(tgt)) res <- NA + else if (ref <= tgt) res <- ref - tgt + 1L + else if (ref > tgt) res <- tgt - ref + else res <- NA + return(res) + } + res <- mapply(dy_cal_func, refdt_vector, tgdt_vector, SIMPLIFY = TRUE, USE.NAMES = FALSE) sdtm_in <- sdtm_in[original_variables] sdtm_in[study_day_var] <- res