【发布时间】:2012-10-15 05:34:32
【问题描述】:
我正在使用 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]))
【问题讨论】:
-
length(table(cut(sample(1:100000, 500, T),breaks=sq)))是10,因此您不匹配。 -
如果最终结果是直方图,为什么不简单地将
breaks参数用于hist()函数? -
这就是我最终要做的。但是我很好奇为什么我不能完全解决
cut的问题。