2012-10-25 13 views
8

मैं कटौती समारोह के साथ काम कर रहा हूँ एक barplot हिस्टोग्राम के लिए डेटा तैयार लेकिन मेरे लेबल और टूट जाता है जो प्रतीयमान विसंगति में चालू रखने के लिए:कट और लेबल/टूटता लंबाई संघर्ष

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 ओ ब्रायन के सुझावों, मैं इस के लिए कोड बदल गया है और चीजों को चालू हालत में हैं। cut(sample(1:100000, 500, T),breaks=sq,labels=sprintf("$%.0f",sq[-1]))

+1

'लंबाई (तालिका (कट (नमूना (1: 100000, 500, टी), टूट जाता है = वर्ग)))' '10', इसलिए अपने बेमेल है। – thelatemail

+0

यदि अंतिम परिणाम हिस्टोग्राम होने जा रहा है, तो आप 'hist()' फ़ंक्शन में 'ब्रेक' पैरामीटर का उपयोग क्यों नहीं करते? –

+0

यही वह है जो मैंने कर दिया। लेकिन मैं उत्सुक था कि क्यों मैं 'कट' मुद्दे को हल नहीं कर सका। – ako

उत्तर

18

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 
+2

अच्छा और स्पष्ट। आश्चर्यजनक रूप से, [कट() '] के लिए स्पष्ट नहीं है (https://stat.ethz.ch/R-manual/R-devel/library/base/html/cut.html) नहीं कहता कहीं भी * "यदि 'ब्रेक' एक वेक्टर है, तो 'लेबल्स' एक वेक्टर होना चाहिए जिसमें लम्बाई 'ब्रेक' से कम है * *। मुझे लगता है कि एक डॉकबग आ रहा है। – smci

संबंधित मुद्दे