有条件地使用默认的直方图边界

时间:2014-12-12 20:02:19

标签: r

我想让直方图以默认方式确定其边界,或者由现有变量指定,具体取决于布尔值。问题是这些默认值:hist(breaks="Sturges",xlim=range(breaks))所以我不能像我想做的那样hist(data,xlim=ifelse(myBool,range(breaks),myBounds)),因为它会返回一个'对象',打破“找不到”错误... < / p>

作为一种解决方法,我可以自己找到默认界限,是否有人知道他们使用的公式是什么?

1 个答案:

答案 0 :(得分:1)

根据指标调用两个电话怎么样:

if(myBool) {
    hist(data)
} else {
    hist(data, xlim = myBounds)
}

查看hist.default的代码,当breaks = "Sturges"时,中断计算为

breaks = pretty(range(x), n = nclass.Sturges(x), min.n = 1)

所以你可以设置:

hist(data,
     xlim = if(myBool) {range(pretty(range(data), n = nclass.Sturges(data), min.n = 1))} else {myBounds})

ifelse不会在这里工作,因为你的条件myBool长度为1,你需要返回长度为2的向量。)或者@rawr建议:

hist(data,
     xlim = ifelse(c(myBool, myBool),
                   range(pretty(range(data), n = nclass.Sturges(data), min.n = 1)),
                   myBounds))