2017-08-14 5 views
5

आर में, जब मैं एक सूची में एक खाली वेक्टर जोड़ने के लिए, यह है, नीचे की तरह:आर: नहीं वास्तव में जोड़ा एक सूची के लिए एक खाली वेक्टर जोड़ना

a = list() 
a[[1]] = c() 
print(length(a)) 

length(a) इस मामले में 0 प्रिंट किया जाएगा , जबकि अगर मैं दूसरी पंक्ति को a[[1]] = c(1) में बदलता हूं, तो सूची की लंबाई 1 की अपेक्षा की जाएगी। मेरे कार्यान्वयन में, यदि सूची में कोई खाली वेक्टर जोड़ता है, तो भी मुझे सूची की लंबाई बदलने की आवश्यकता है। क्या ऐसा करने के लिए कोई रास्ता है?

+1

'एक [[1]] = वेक्टर()' यह करेगा। उपयोग मामले के आधार पर आपको वेक्टर मोड भी निर्दिष्ट करने की आवश्यकता हो सकती है। 'सी()' रिटर्न 'NULL', जो – dww

+0

काम नहीं करेगा, शुरुआत से सही आकार की सूची बनाने के लिए एक बेहतर विचार है, उदा। 'एक <- सूची (एनयूएलएल)' या 'एक <- वेक्टर (1, मोड = 'सूची')', ताकि [दूसरे सर्कल] में समाप्त न हो (http://www.burns-stat.com /pages/Tutor/R_inferno.pdf#chapter.2)। – alistaire

उत्तर

3

vector() (तार्किक) और character() जैसी चीजों का उपयोग करना उस तत्व को एक विशिष्ट श्रेणी निर्दिष्ट करता है जिसे आप "खाली" रखना चाहते हैं। मैं नूल क्लास का उपयोग करूंगा। आप [[<- के बजाय [<- का उपयोग करके एक पूर्ण सूची तत्व असाइन कर सकते हैं।

a <- list() 
a[1] <- list(NULL) 
a 
# [[1]] 
# NULL 
length(a) 
# [1] 1 
+1

ओपी वास्तव में बहुत करीब था - 'एक [1] = सूची (सी()) 'एक ही परिणाम देने के लिए भी काम करेगा। – thelatemail

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