1. ホーム
  2. r

[解決済み】Rヒストグラムの範囲エラー:いくつかの'x'がカウントされない; 'break'が'x'の範囲に及ばないかもしれない

2022-02-10 20:30:57

質問

あるデータセットがあり、それを hist データセットの中には、私が気にする値を超えている行がいくつもあります。具体的には、私のRスクリプトは

library(ggplot2)    
data = read.table("input.txt", sep=" ", strip.white=TRUE, header=TRUE)
pdf("out.pdf")
hist(data$actions,breaks=seq(0,130,by=1))
dev.off()

のデータセット例です。 input.txt があります。

name actions
foo 3
bar 129
baz 131

Rスクリプトを実行すると、エラーが発生します。

hist.default(data$actions, breaks = seq(0, 130, by = 1), でエラー。
いくつかの 'x' がカウントされない; 'breaks' が 'x' の範囲に及ばないのかもしれない。
コール: hist -> hist.default
実行停止

このエラーが発生する理由はわかっています:130より大きい値の出現が1回だけある、つまり baz で、値が131の場合。

ヒストグラムを作成したいのですが、どうすればよいでしょうか。 ちょうど 0から130の指定された範囲の周波数について、その範囲外の周波数はすべて黙って無視されます。どうしたらいいでしょうか?

どのように解決するのですか?

このエラーを回避する最善の方法は、Rの基本関数に与えるデータをサブセットすることです hist .

例えば

with(data, hist(actions[actions >= 0 & actions < 131], breaks=seq(0,130,by=1))

もう少し柔軟な方法として、希望する値のセットをあらかじめ指定しておくと、ある時点で気が変わったときに簡単に調整できるようになるかもしれませんね。

myValues <- seq_len(131)-1
with(data, hist(actions[actions %in% myValues], breaks=myValues)