【问题标题】:Need help writing logical statements for the following example需要帮助为以下示例编写逻辑语句
【发布时间】:2018-02-22 15:29:22
【问题描述】:

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

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

  1. 卫生问题(变量名:H2I)

  2. 如厕困难(变量名:H2H)

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

  4. 进食困难(变量名: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).

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

【问题讨论】:

  • 你能举个例子吗?您可以将向量放入一个 4 列矩阵,然后取第一个非零列:set.seed(1); m &lt;- matrix(sample(c(NA, 1:4), 40, TRUE), 10); m[is.na(m)] &lt;- 0; m[cbind(1:10, max.col(m != 0, 'first'))]
  • 我添加了一个示例,希望能提供一些清晰的说明
  • 数据将以什么格式到达?请给出包含和不包含缺失值的示例输入数据集。
  • 不,这根本没有帮助。请在发布问题之前阅读此内容stackoverflow.com/help/how-to-ask

标签: r boolean-logic


【解决方案1】:

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

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

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

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

H2C 假定为 0

【讨论】:

  • 我添加了一个示例,希望能提供一些清晰的说明
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多