创建逻辑比较作为输入R的函数

时间:2018-06-05 11:11:22

标签: r function logical-operators

为了检查一致性,我在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替换为>=<等。目前,这不起作用,有没有解决方法?

1 个答案:

答案 0 :(得分:1)

尝试分组。这个问题通常应包括可重复的测试数据,但我这次提供了。

import A
# avoid load_some_settings()

,并提供:

imp.load_source