Skip to content

Commit cb3721b

Browse files
authored
Merge pull request #1346 from cmu-delphi/nullity-oddity
Fix pipeline when barrier column is all NAs
2 parents 895d4de + 22ef128 commit cb3721b

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

facebook/delphiFacebook/R/variables.R

+20-7
Original file line numberDiff line numberDiff line change
@@ -625,9 +625,15 @@ code_vaccines <- function(input_data, wave) {
625625
if ( all(c("V15a", "V15b") %in% names(input_data)) ) {
626626
# introduced in Wave 11
627627
vaccine_barriers <- coalesce(input_data$V15a, input_data$V15b)
628-
vaccine_barriers <- ifelse(vaccine_barriers == "13", NA, vaccine_barriers)
629-
vaccine_barriers <- split_options(vaccine_barriers)
630-
628+
629+
# If the entire column is NA, ifelse() results in a logical vector, not a
630+
# character vector, which confuses split_options; since the result should be
631+
# NA anyway
632+
if (any(!is.na(vaccine_barriers))) {
633+
vaccine_barriers <- ifelse(vaccine_barriers == "13", NA_character_, vaccine_barriers)
634+
vaccine_barriers <- split_options(vaccine_barriers)
635+
}
636+
631637
input_data$v_vaccine_barrier_eligible <- is_selected(vaccine_barriers, "1")
632638
input_data$v_vaccine_barrier_no_appointments <- is_selected(vaccine_barriers, "2")
633639
input_data$v_vaccine_barrier_appointment_time <- is_selected(vaccine_barriers, "3")
@@ -685,12 +691,19 @@ code_vaccines <- function(input_data, wave) {
685691
input_data$v_vaccine_barrier_type_has <- NA
686692
input_data$v_vaccine_barrier_none_has <- NA
687693
}
688-
694+
689695
if ( "V15b" %in% names(input_data) ) {
690696
# introduced in Wave 11
691-
vaccine_barriers <- ifelse(input_data$V15b == "13", NA, input_data$V15b)
692-
vaccine_barriers <- split_options(vaccine_barriers)
693-
697+
# If the entire column is NA, ifelse() results in a logical vector, not a
698+
# character vector, which confuses split_options; since the result should be
699+
# NA anyway
700+
if (any(!is.na(input_data$V15b))) {
701+
vaccine_barriers <- ifelse(input_data$V15b == "13", NA, input_data$V15b)
702+
vaccine_barriers <- split_options(vaccine_barriers)
703+
} else {
704+
vaccine_barriers <- input_data$V15b
705+
}
706+
694707
input_data$v_vaccine_barrier_eligible_tried <- is_selected(vaccine_barriers, "1")
695708
input_data$v_vaccine_barrier_no_appointments_tried <- is_selected(vaccine_barriers, "2")
696709
input_data$v_vaccine_barrier_appointment_time_tried <- is_selected(vaccine_barriers, "3")

0 commit comments

Comments
 (0)