2013-06-10 11 views
11

मैं इस नामित वेक्टर है:Convert नामित वेक्टर dataframe को

x <- 1:5 

names(x) <- c('0 15', '1 15', '2 15', '0 16', '1 16') 

क्या सबसे अच्छा तरीका यह dataframe को x कन्वर्ट करने के लिए है:

xDF <- data.frame(V1 = c(0, 1, 2, 0, 1), V2 = c(15, 15, 15, 16, 16), V3 = 1:5) 

उत्तर

14

यहाँ एक बहुत ही सीधा रास्ता है:

cbind(read.table(text = names(x)), x) 
    V1 V2 x 
0 15 0 15 1 
1 15 1 15 2 
2 15 2 15 3 
0 16 0 16 4 
1 16 1 16 5 

इस मामले में, read.table स्वचालित रूप से आपके names(x) घटक बंटवारे का ख्याल रखेंगे (डिफ़ॉल्ट रूप से, अंतरिक्ष से, लेकिन यदि आवश्यक हो तो अन्य पात्रों निर्दिष्ट किया जा सकता है)।

आप के लिए नाम भी सेट कर सकते हैं x सीधे cbind में:

library(splitstackshape) 
cSplit(stack(x), "ind", " ") 
:

cbind(read.table(text = names(x)), V3 = x) 

एक और अधिक प्रत्यक्ष दृष्टिकोण मेरी "splitstackshape" पैकेज से cSplit उपयोग करने के लिए, इस तरह होगा

4

मैं इस तरह कुछ करना चाहते हैं:

res = data.frame(cbind(do.call('rbind', strsplit(names(x), " ")), x)) 
res 
    V1 V2 x 
0 15 0 15 1 
1 15 1 15 2 
2 15 2 15 3 
0 16 0 16 4 
1 16 1 16 5 

ध्यान रखें कि डेटा प्रकार अभी तक सही नहीं हैं, पहले दो कॉलम factor हैं।