У меня есть несколько последовательных сравнительных оценок, которые нужно провести с двумя переменными в R, чтобы проверить соответствие.
В этом примере, скажем, у меня есть логическое значение ANES_6 и числовое значение ANES.Логическое значение равно 1, если пациент имел анестезию в течение более 6 часов, еще 0.Числовое значение - это время, когда пациент находился под наркозом.
Я хочу написать функцию, которая может заменить несколько копий следующих копий:
data %>% select(ANES_6, ANES) %>%
filter(ANES_6 == 1 & ANES < 6)) %>%
tally()
data %>% select(ANES_6, ANES) %>%
filter(ANES_6 == 0 & ANES >= 6)) %>%
tally()
data %>% select(ANES_6, ANES) %>%
filter(ANES_6 == 1 & ANES >= 6)) %>%
tally()
data %>% select(ANES_6, ANES) %>%
filter(ANES_6 == 0 & ANES >= 6)) %>%
tally()
Я мог бы создать следующую функцию (не исчерпывающую во всех случаях, показанных выше):
my_func <- function(x, y) {
if (x == "gt" & y == 1) {
data %>% select(ANES_6, AnaestheticTime_hours_) %>%
filter(ANES >= 6 & ANES_6 == 1) %>%
tally()
} else if (x == "lt" & y == 0 ) {
data %>% select(ANES_6, AnaestheticTime_hours_) %>%
filter(ANES < 6 & ANES_6 != 1) %>%
tally()
}}
, который принимает x и y в качестве входных данных, при этом значения x равны c ('lt', 'gt'), а y - c (0, 1), чтобы оценить все возможныесостояние.Однако это повлечет за собой написание большего количества кода, а не меньше.
Есть ли способ ввести логические сравнения в функцию, так что работает следующее:
my_func <- function(x, y) {
data %>% select(ANES_6, ANES) %>%
filter(ANES x 6 & ANES_6 == y)
}
с заменой x
на >=
, <
и т. Д. Вввод функции.В настоящее время это не работает, есть ли обходные пути?