我希望尽可能高效地编写以下场景的逻辑。
我有4个变量,它们是序数变量,有5个类别,范围从0到4 ..
卫生困难(名称:H2I)
厕所难度(名称:H2H)
运动困难(名称:H2C)
难以进食(名称:H2G)
基本上如果任何选项都是非缺失的,我想在难度函数中使用那里的值,对于缺少的那些我希望难度函数参数为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)。
基本上,函数之前的代码必须确定哪些难度组件是非缺失的,并将这些值赋给函数,而缺失必须为零。
答案 0 :(得分:0)
如果我已正确理解您的问题,您可以在定义函数时为缺少的参数设置默认值:
diff.fun<-function(H2I = 0,H2H = 0,H2C = 0,H2G = 0){...}
现在,当没有为一个或多个参数提供值时,默认值为0,例如:
diff.fun(H2I = 1, H2H = 2, H2G = 3)
假设 H2C
为0