R帮助解决问题

时间:2021-07-02 22:42:48

标签: r

我正在尝试创建一个直方图,该图将总结以 2 或 4 回答问题 s22 的男性的第二根手指长度的分布。我遇到错误,显示无效中断,我该如何解决这个问题

1 个答案:

答案 0 :(得分:1)

OP 对问题的最后一次编辑(截至 2021-07-03 03:55Z)显示了代码

s22_2or4_male <- mydata1$second[mydata1$gender == 'male' & mydata1$s22 =='2' | mydata1$s22 == '4']
  
hist(mydata1$second[s22_2or4_male])

有几个问题:

  1. 由于 & 运算符的优先级以及 or 子句周围缺少括号,逻辑表达式将选择 males with s22 == 2 as以及所有其他带有 s22 == 4 无论性别的行。
  2. s22_2or4_male 已包含列 mydata1$second 的选定值。因此,hist(mydata1$second[s22_2or4_male]) 将使用 s22_2or4_male 的值对 mydata1$second 再次进行子集化。

问题可以通过以下方式解决

s22_2or4_male <- mydata1$gender == 'male' & mydata1$s22 %in% c('2', '4')
hist(mydata1$second[s22_2or4_male])

现在,s22_2or4_male 是一个逻辑向量,表示 mydata1 的选定行。

使用 mtcars 数据集的可重现示例

cyl_6or8_gear4 <- mtcars$gear == 4 & mtcars$cyl %in% c(6, 8)
hist(mtcars$mpg[cyl_6or8_gear4])

enter image description here