2013-05-22 8 views
23

मैं अंतर्निहित मैट्रिक्स state.x77 के "जनसंख्या" के माध्य की गणना करना चाहता हूं। कोड हैं:r त्रुटि मंद (एक्स) की सकारात्मक लंबाई होनी चाहिए?

apply(state.x77[,"Population"],2,FUN=mean) 

#Error in apply(state.x77[, "Population"], 2, FUN = mean) : 

# dim(X) must have a positive length 

मैं इस त्रुटि को कैसे रोक सकता हूं? अगर मैं $ प्रवेश का उपयोग करते

apply(state.x77$Population,2,mean) 
# Error in state.x77$Population : $ operator is invalid for atomic vectors 

परमाणु वेक्टर क्या है?

+3

लेकिन परवाह किए बिना, आप केवल एक कॉलम के लिए यह कर रहे हैं, यही कारण है कि अभी नहीं 'मतलब (state.x77 [, "जनसंख्या"]) '? – joran

+0

@joran आपको बहुत बहुत धन्यवाद।दोनों संदर्भ अक्सर पूछे जाने वाले प्रश्न और माध्य (state.x77 [, "जनसंख्या"]) फायदेमंद हैं। – time

उत्तर

29

Joran की टिप्पणी पर विस्तार करने के लिए, पर विचार करें:

> is.vector(state.x77[,"Population"]) 
[1] TRUE 
> is.matrix(state.x77[,"Population"]) 
[1] FALSE 

तो, अपने Population डेटा अब किसी अन्य वेक्टर से कोई भिन्न है 1:10 की तरह है, जो के खिलाफ apply के लिए न तो स्तंभों या पंक्तियों है। यह संख्याओं की एक श्रृंखला है जिसमें कोई और उन्नत संरचना या आयाम नहीं है। जैसे

> apply(1:10,2,mean) 
Error in apply(1:10, 2, mean) : dim(X) must have a positive length 

तुम सिर्फ मैट्रिक्स सबसेट जो आपने चुना है के खिलाफ सीधे mean समारोह का उपयोग कर सकते इसका मतलब है: उदाहरण के लिए:

> mean(1:10) 
[1] 5.5 
> mean(state.x77[,"Population"]) 
[1] 4246.42 

व्याख्या करने के लिए 'परमाणु' वेक्टर अधिक, आर FAQ देखें दोबारा (और यह थोड़ा जटिल हो जाता है, इसलिए अपनी टोपी पर पकड़ें) ...

आर में छह मूल ('परमाणु') वेक्टर प्रकार हैं: तार्किक, पूर्णांक, वास्तविक, जटिल, स्ट्रिंग (या चरित्र) और कच्चे। http://cran.r-project.org/doc/manuals/r-release/R-lang.html#Vector-objects

तो इस उदाहरण में परमाणु अनुसंधान वस्तुओं की बुनियादी निर्माण घटक के रूप में वैक्टर करने के लिए बात कर रहा है (परमाणुओं असली दुनिया में सब कुछ बनाने की तरह)।

आप एक आदेश के रूप में ?"$" दर्ज करके अनुसंधान के इनलाइन मदद पढ़ते हैं, तो आप पाएंगे यह कहते हैं:

'$' पुनरावर्ती वस्तुओं के लिए ही मान्य है, और केवल पुनरावर्ती पर नीचे भाग में चर्चा की है वस्तुओं।

के बाद से वैक्टर (1:10) की तरह बुनियादी निर्माण घटक ("परमाणु"), कोई पुनरावर्ती उप तत्वों के साथ कर रहे हैं, का उपयोग करने की उनमें से भाग काम नहीं करेंगे $ उपयोग करने के लिए कोशिश कर रहा।

अपने मैट्रिक्स के बाद से (statex.77), अनिवार्य रूप से बस कुछ आयामों के साथ एक वेक्टर है जैसे:

> str(matrix(1:10,nrow=2)) 
int [1:2, 1:5] 1 2 3 4 5 6 7 8 9 10 

... आप भी $ उपयोग नहीं कर सकते उप भागों तक पहुँचने के लिए।

> state.x77$Population 
Error in state.x77$Population : $ operator is invalid for atomic vectors 

लेकिन आप उपयोग कर सकते हैं subparts [ का उपयोग कर और नाम तो जैसे:

> state.x77[,"Population"] 
    Alabama   Alaska  Arizona... 
     3615   365   2212... 
+0

यह एक समान डेटा fir पर कैसे काम करता है उदा। '> is.vector (state.center $ x) [1] सही > is.matrix (state.center $ x) [1] गलत > state.center $ x [1] -८६.७,५०९ -127.2500 -111.6250 -92.2992 -11 9.7730 ....... – Ankit

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