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