最良の方法は、breaks
引数を手動で設定することです。コードのデータを使用して、
hist(dataset,breaks=rep(1:7,each=2)+c(-.4,.4))
次のプロットが得られます。

最初の部分はrep(1:7,each=2)
、バーを中心に配置する数値です。2番目の部分は、バーの幅を制御します。あなたがそれを変えるならば、c(-.49,.49)
彼らはほとんど触れるでしょう、あなたがそれを変えるならば、c(-.3,.3)
あなたはより狭いバーを手に入れます。それを設定すると、ベクトルc(-.5,.5)
に同じ数を2回含めることは許可されていないため、Rはあなたに怒鳴ります。breaks
なぜこれが機能するのですか?
ブレークベクトルを分割すると、次のような部分が得られます。
> rep(1:7,each=2)
[1] 1 1 2 2 3 3 4 4 5 5 6 6 7 7
そしてこのように見える2番目の部分:
> c(-.4,.4)
[1] -0.4 0.4
それらを足し合わせると、Rは2番目のベクトルを必要な回数ループして、最初のベクトルと同じ長さにします。だからあなたは
1-0.4 1+0.4 2-0.4 2+0.4 3-0.4 3+0.4 [etc.]
= 0.6 1.4 1.6 2.4 2.6 3.4 [etc.]
したがって、0.6から1.4までの1つのバー(幅2 * .4の1を中心とする)があります。2* .4を中心とする1.6から2.4までの別のバーがあり、以下同様です。間にデータがある場合(たとえば2.5)、ヒストグラムは2.4から2.6までのバーを作成し、バーの幅が均一ではないため、ヒストグラムはちょっとばかげているように見えます(そのバーの幅はわずか0.2であるため、他のすべては.8)です。しかし、整数値だけでは問題ありません。