2013-01-18 6 views
23

में नए तत्व संलग्न मैं सिर्फ आर जानने के लिए शुरू कर रहा हूँ और एक मुद्दा है कि मुझे काफी उलझन में जा रहा है कर रहा हूँ कर सकते हैं। मेरा लक्ष्य एक खाली वेक्टर बनाना और तत्वों को जोड़ना है। लगता है कि काफी आसान लगता है, लेकिन स्टैक ओवरफ्लो पर मैंने जो समाधान देखा है वह काम नहीं कर रहा है।एक खाली वेक्टर नहीं बना सकते हैं और आर

बुद्धि के लिए

,

>  a <- numeric() 
>  append(a,1) 
[1] 1 
>  a 
numeric(0) 

मैं काफी समझ नहीं मैं गलत क्या कर रही हूं। कोई भी नौसिखिया की मदद करना चाहता है?

+0

आप कर सकते थे 'एक <- संलग्न (एक, 1)' के साथ-साथ, लेकिन 'सी()' संभवतः अधिक मुहावरेदार होगा। और शुरुआत के लिए, मुझे शायद यह भी उल्लेख करना चाहिए कि इस तरह की बढ़ती वस्तुओं ठीक है जब आप सीख रहे हैं और भाषा का अनुभव कर रहे हैं, लेकिन इसे बुरा अभ्यास माना जाता है (यह बहुत धीमा हो जाएगा), और सामान्य रूप से आप इसे टालना चाहिए। – joran

उत्तर

36

append कुछ है कि तुम क्या सोच रहे हैं से कुछ अलग है नहीं करता है। ?append देखें।

विशेष रूप से, ध्यान दें कि append अपने तर्क संशोधित नहीं करता है। यह परिणाम देता है।

आप समारोह c हैं:

> a <- numeric() 
> a <- c(a, 1) 
> a 
[1] 1 
+1

@ user1935935 नोट: 'एक <- सी (एक, 1)' मूल्य वापस एक को प्रदान करती है। –

+3

@ user1935935 याद रखें, आर एक कार्यात्मक प्रोग्रामिंग भाषा है: फ़ंक्शंस (आमतौर पर) दुष्प्रभाव नहीं होते हैं। यदि आप किसी ऑब्जेक्ट को संशोधित करना चाहते हैं, तो आपको हमेशा एक असाइनमेंट के माध्यम से परिणाम को "पकड़ना" होगा। – joran

5

आपका a वेक्टर संदर्भ द्वारा पारित किया जा रहा है, इसलिए जब यह संशोधित किया गया है आप a में इसे वापस स्टोर करने के लिए किया है। आप a उपयोग नहीं कर सकते और उम्मीद यह अद्यतन करने की।

तुम बस, अपने वेक्टर के लिए वापसी मान असाइन करना होगा मैट की ही तरह:

> a <- numeric() 
> a <- append(a, 1) 
> a 
[1] 1 

मैट सही है कि c() बेहतर (कम कीस्ट्रोक्स और अधिक बहुमुखी) है, हालांकि append() के आपके उपयोग ठीक है।