2011-05-23 13 views
28

मैं एम (एक चर) कॉलम की संख्या (उदाहरण के लिए 30) के साथ आर में डेटा.फ्रेम बनाना चाहता हूं, और 2 पंक्तियां और सभी मानों को भरें शुरुआत में 0 के साथ data.frame। ऐसा लगता है कि डेटा.फ्रेम पंक्तियों के आधार पर मूल्यों को पॉप्युलेट करता है बल्कि कॉलम, कोई सुझाव है कि मैं यह कैसे कर सकता हूं? धन्यवाद :)एम कॉलम और 2 पंक्तियों के साथ डेटा.फ्रेम बनाएं

उत्तर

47

क्या m वास्तव में data.frame() होना चाहिए या matrix() पर्याप्त होगा?

m <- matrix(0, ncol = 30, nrow = 2) 

अगर आप की जरूरत है आप एक data.frame() कि चारों ओर लपेट कर सकते हैं:

m <- data.frame(m) 

या एक पंक्ति में सभी: m <- data.frame(matrix(0, ncol = 30, nrow = 2))

+0

और यह वही था जो _I_ लिखने जा रहा था। +1;) मेरा एकमात्र जोड़ा स्पष्ट रूप से इंगित करना होगा कि 'data.frame()' आमतौर पर कॉलम द्वारा डेटा को टैग = मान तर्कों के माध्यम से निर्दिष्ट करता है। – joran

26

पूर्णता के लिए:

चेस के जवाब की पंक्तियों के साथ , मैं आमतौर पर डेटा को मैट्रिक्स को कोर करने के लिए as.data.frame का उपयोग करता हूं। फ्रेम:

m <- as.data.frame(matrix(0, ncol = 30, nrow = 2))

संपादित करें: speed test data.frame बनाम as.data.frame

system.time(replicate(10000, data.frame(matrix(0, ncol = 30, nrow = 2)))) 
    user system elapsed 
    8.005 0.108 8.165 

system.time(replicate(10000, as.data.frame(matrix(0, ncol = 30, nrow = 2)))) 
    user system elapsed 
    3.759 0.048 3.802 

हाँ, यह तेजी से (लगभग 2 गुना से) प्रतीत होता है।

+0

आपके उत्तर के बारे में क्या अलग है? क्या यह तेज़ है? –

+0

@Eduardo यह थोड़ा तेज़ प्रतीत होता है - ऊपर देखें। – Greg

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