为了检查一致性,我在R中用两个变量进行了几次连续的比较评估。
在这个例子中,假设我有一个布尔ANES_6和一个数字ANES。如果患者麻醉超过6小时,则布尔值为1,否则为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
替换为>=
,<
等。目前,这不起作用,有没有解决方法?
答案 0 :(得分:1)
尝试分组。这个问题通常应包括可重复的测试数据,但我这次提供了。
import A
# avoid load_some_settings()
,并提供:
imp.load_source