需要帮助编写以下示例的逻辑语句

时间:2018-02-22 15:29:23

标签: r boolean-logic

我希望尽可能高效地编写以下场景的逻辑。

我有4个变量,它们是序数变量,有5个类别,范围从0到4 ..

  1. 卫生困难(名称:H2I)

  2. 厕所难度(名称:H2H)

  3. 运动困难(名称:H2C)

  4. 难以进食(名称:H2G)

  5. 基本上如果任何选项都是非缺失的,我想在难度函数中使用那里的值,对于缺少的那些我希望难度函数参数为0 ... 我很难写这段代码

    可能需要注意的是,没有实际数据。我正在使用的值是调查回复,因此它们一次只能出现一个。

    整体难度量表功能如下所示:

    diff.fun<-function(H2I,H2H,H2C,H2G) {
    
      ifelse(H2I == 4 & H2H == 4 & H2C == 4 & H2G == 4 ,6,
         ifelse(H2G == 4 | H2C == 4 ,5,
                ifelse (H2C == 3 | H2G == 3 ,4,
                        ifelse((H2I>=3 | H2H>=3) & H2C<3 & H2C<3,3,
                               ifelse((H2I==2 | H2H==2 | H2C==2 | H2G==2) & (H2I<3 & H2H<3 & H2C<3 & H2G<3),2,
                                      ifelse ((H2I==1 | H2H==1  | H2C==1 | H2G==1 ) & (H2I<2 & H2H<2 & H2C<2 & H2G<2),1, 
                                              ifelse(H2I == 0 & H2H == 0 & H2C ==0 & H2G  == 0,0,NA)))))))
    }
    

    感谢任何帮助。我对R来说相当新,并且在这里与逻辑有点挣扎。如有必要,我很乐意提供更多详细信息。

    编辑:

    例如,

    如果H2I和H2H不存在且缺少H2C和H2G,我该怎么告诉diff.fun:

    diff.fun(H2I,H2H,0,0)。

    基本上,函数之前的代码必须确定哪些难度组件是非缺失的,并将这些值赋给函数,而缺失必须为零。

1 个答案:

答案 0 :(得分:0)

如果我已正确理解您的问题,您可以在定义函数时为缺少的参数设置默认值:

diff.fun<-function(H2I = 0,H2H = 0,H2C = 0,H2G = 0){...}

现在,当没有为一个或多个参数提供值时,默认值为0,例如:

diff.fun(H2I = 1, H2H = 2, H2G = 3)
假设

H2C为0