我正在使用cut函数为条形图直方图准备数据,但在我的标签和符号之间一直看似不一致:
Error in cut.default(sample(1:1e+05, 500, T), breaks = sq, labels = sprintf("$%.0f", :
labels/breaks length conflict
这是一个例子。我假装它是收入数据,使用$ 10,000到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]))
答案 0 :(得分:24)
使用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