我想让直方图以默认方式确定其边界,或者由现有变量指定,具体取决于布尔值。问题是这些默认值:hist(breaks="Sturges",xlim=range(breaks))
所以我不能像我想做的那样hist(data,xlim=ifelse(myBool,range(breaks),myBounds))
,因为它会返回一个'对象',打破“找不到”错误... < / p>
作为一种解决方法,我可以自己找到默认界限,是否有人知道他们使用的公式是什么?
答案 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))