I would use a variation of @technocrat's method.
DF <- structure(list(heart_failure = c("Yes", "No", "Yes", "Yes", "No", "No", "No"),
angina = c("No", "No", "Yes", "No", "No", "Yes","No"),
MI = c("No", "No", "No", "Yes", "No", "Yes", "No"),
heart_disease = c("Yes", "No", "Yes", "Yes", "No", "Yes", "No")),
class = "data.frame", row.names = c(NA, -7L))
DF <- DF[, -4] #drop the exisitng heart_disease column
DF["heart_disease"] <- ifelse(rowSums(DF == "Yes", na.rm = TRUE) > 0,"Yes", "No")