2011-08-23 18 views
9

में दोहराने वाला मान डालना मुझे यह पूछने में गूंगा लगता है लेकिन यहां जाता है। मेरे पास संख्याओं की एक सूची है लेकिन मैं इसे तारीख के साथ जोड़ना चाहता हूं।कॉलम

उदाहरण के लिए

:

list1 <- c(1, 2, 3, 4, 5) 
list2 <-c("2009-01-01") 
list3 <-cbind(list2, list1) 

मैं एक ही तिथि सूचीबद्ध बराबर बार के रूप में वहाँ डेटा अंक हैं और फिर डेटा बिंदुओं के साथ संयुक्त चाहते हैं।

date    number 
"2009-01-01"   1 
"2009-01-01"   2 
"2009-01-01"   3 
"2009-01-01"   4 
"2009-01-01"   5 

जब मैं उपर्युक्त कोड चलाने की कोशिश करता हूं तो मुझे मिलान की लंबाई के बारे में संदेश मिलता है। किसी भी सुझाव की सराहना की जाती है। धन्यवाद।

+1

मुझे समझ नहीं आता; यह मेरे लिए काम करता है .... आप एक मैट्रिक्स के बजाय डेटा.फ्रेम का प्रयास करना चाह सकते हैं (जो 'cbind' उत्पादन करता है)। साथ ही, उन चीज़ों को कॉल करने से बचें जो 'सूची' सूची नहीं हैं "। यह एक भ्रमित हो जाता है क्योंकि एक सूची एक आर डेटा प्रकार है। –

उत्तर

9

मेरी डेटा फ्रेम टिप्पणी को और वर्णनात्मक बनाने के लिए संपादित किया गया।

rep का उपयोग करने के बारे में कैसे?

list1 <- 1:5 
list2 <- rep("2009-01-01",length(list1)) 
list3 <- cbind(list2, list1) 

हालांकि आर के रीसाइक्लिंग नियमों को आपको वांछित आउटपुट देना चाहिए। इसके अलावा, आप सुनिश्चित करें कि आप एक डेटा फ्रेम नहीं करना चाहते हैं:

list3 <- data.frame(date = list2, number = list1) 

cbind के बाद से अपने मामले में इच्छा एक चरित्र मैट्रिक्स, जो, के बाद से मैट्रिक्स केवल एक ही प्रकार का होना चाहिए का उत्पादन।

2

कारण यह देखने के बावजूद कि मैं एक और जवाब "सही" था, यह देखते हुए कि cbind एक मैट्रिक्स देता है, क्योंकि आपके पास एक चरित्र था जो 'चरित्र' था, पूरी तरह से 'चरित्र' प्रकार का है।

> str(list3) 
chr [1:5, 1:2] "2009-01-01" "2009-01-01" "2009-01-01" ... 
- attr(*, "dimnames")=List of 2 
    ..$ : NULL 
    ..$ : chr [1:2] "list2" "list1 

बेहतर होगा कि जब एक मिश्रित प्रकार (तिथियों और संख्यात्मक) के डेटा के साथ काम कर रहा है एक data.frame उपयोग करने के लिए।

> data.frame(dt = as.Date("2009-01-01"), l1 = list1) 
      dt l1 
1 2009-01-01 1 
2 2009-01-01 2 
3 2009-01-01 3 
4 2009-01-01 4 
5 2009-01-01 5 
+0

अच्छा बिंदु। मुझे आर के साथ कुछ अनुभव है और मैं अभी भी विभिन्न डेटा प्रकार हैंडलिंग को याद रखने के लिए संघर्ष कर रहा हूं। याद दिलाने के लिए शुक्रिया। – acesnap

1

cbind एक dataframe वापस आ जाएगी अगर तर्क एक dataframe है: यह इसके अलावा सुविधा है जो आपको भी() तर्क रीसाइक्लिंग के बाद से प्रतिनिधि उपयोग करने के लिए पूर्ण रूप से अपने दोहराया जाएगा की जरूरत नहीं है नहीं है। उस स्थिति में, यह data.frame के लिए बस एक रैपर के रूप में कार्य करता है [देखें ?cbind]।

अन्य उत्तरों और टिप्पणियों में जहां उपयोगकर्ता ने कहा कि cbind ने काम किया और यह एक मैट्रिक्स बनाया, उन्होंने छोड़ा कि मैट्रिक्स एक चरित्र मैट्रिक्स था और संख्याओं को चरित्र तारों के साथ जोड़ दिया गया था। आप शायद वह नहीं चाहते थे।

एक समाधान है, अभी तक प्रस्तुत नहीं, यह करने के लिए है:

vector1 <- c(1, 2, 3, 4, 5); 
vector2 <- c("2009-01-01"); 
cbind(data.frame(date = vector2), number = vector1); 

यह एक dataframe बनाता है क्योंकि पहले तर्क एक dataframe है।

लेकिन, मुझे सबसे अच्छा लगता है, और वास्तव में आप जानते हैं कि क्या आप चाहते हैं data.frame सीधे कॉल करने के लिए है पता चलता है कि:

data.frame(date = vector2, number = vector1);