15

barplot ヒストグラムのデータを準備するために cut 関数を使用していますが、ラベルとブレークの間に一貫性がないように見えます。

Error in cut.default(sample(1:1e+05, 500, T), breaks = sq, labels = sprintf("$%.0f", : labels/breaks length conflict

ここに例があります。$10,000 のビンで 0 から $100,000 のシーケンスを使用して、これが収入データであると仮定します。同じ変数を使用して、ブレークとラベルの両方を生成し、ラベル側に小さな書式を設定します。文字ベクトルと比較すると、何らかの理由で長さが異なるのではないかと思いましたが、それでも同じ長さのように見えます。

> sq<-seq(0,100000,10000)
> cut(sample(1:100000, 500, T),breaks=sq,labels=sprintf("$%.0f",sq))
> length(sprintf("$%.0f",sq))
[1] [11]
> length(sq)
[1] [11]

編集:

@thelatemail と @Josh O'Brien の提案に従って、コードをこれに変更し、正常に動作しています。 cut(sample(1:100000, 500, T),breaks=sq,labels=sprintf("$%.0f",sq[-1]))

4

1 に答える 1

31

ではcut()、11 個の区切りで 10 個のレベルが区切られ、必要なラベルは 10 個だけです。エラーは、"labels/breaks length conflict"への呼び出しが引数sprintf()に提供するラベルが多すぎることを示しています。labels=

コード内:

breaks <- 0:10/10
dat <- runif(1e4)

length(breaks)
# [1] 11
length(levels(cut(breaks, sq)))
# [1] 10
于 2012-10-25T04:58:28.947 に答える