2014-06-26 11 views
14

के लिए कई विषम या यहां तक ​​कि कॉलम/पंक्तियों का चयन करना आर में कई गैर-निरंतर i.e. विषम या यहां तक ​​कि पंक्तियों/स्तंभों का चयन करने का कोई तरीका है?डेटाफ्रेम

मैं अपने प्रिंसिपल घटक विश्लेषण के लिए लोडिंग की योजना बना रहा हूं। मैं डेटा इस तरह का आदेश दिया की 84 पंक्तियों: x_1y_1x_2 ..... x_42y_42

और इस समय मैं इस तरह x और y लोडिंग आंकड़े के लिए dataframes बनाने हूँ:

data.pc = princomp(as.matrix(data)) 

x.loadings <- data.frame(x=data.pc$loadings[c(1, 3, 5, 7, 9, 11, 13 ,15, 17, 19, 
21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41), 1]) 

yloadings <- data.frame(y=data.pc$loadings[c(2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 
22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42), 1]) 

निश्चित रूप से ऐसा करने का एक आसान तरीका है?

+0

'? Seq' – alko989

+1

पर एक नज़र डालें ध्यान दें कि आप कॉलम चुनने के बारे में बात कर रहे हैं, लेकिन आपका कोड पंक्तियों का चयन करता है f रोम कॉलम 1. –

+0

धन्यवाद, मैंने इसे प्रतिबिंबित करने के लिए पोस्ट को बदल दिया है। – dmt

उत्तर

20

तुम हमेशा seq के साथ दृश्यों उत्पन्न कर सकते हैं:

even_indexes<-seq(2,42,2) 
odd_indexes<-seq(1,41,2) 
फिर

,

x.loadings <- data.frame(x=data.pc$loadings[odd_indexes,1]) 
2

seq_len के साथ संयोजन में उपयोग %% अपने डेटा फ्रेम का अनुक्रमण भी और बाधाओं कॉलम/पंक्तियों

कुछ इस तरह का प्रयास करें खोजने के लिए वेक्टर बनाने के लिए:

even <- seq_len(ncol(data.pc)) %% 2 # index 
x.loadings <- data.frame(x=data.pc$loadings[even, ]) 
y.loadings <- data.frame(x=data.pc$loadings[!even, ]) 
35

तार्किक वैक्टर अनुक्रमण के लिए उपयोग किया जाता है, वे पुनर्नवीनीकरण किया जाता है ताकि यह आप अजीब कॉलम या अजीब पंक्तियों

calld[ c(TRUE,FALSE), ] # rows 
calld[ , c(TRUE,FALSE) ] #columns 

भी पंक्तियों या स्तंभों हो जाता है:

calld[ !c(TRUE,FALSE), ] # rows 
calld[ , !c(TRUE,FALSE) ] #columns 

हर तीसरे स्तंभ:

calld[ , c(TRUE,FALSE, FALSE) ] #columns 1,4,7 , .... 
+0

बेस्ट उत्तर। यदि एन "हर एनएच कॉलम/पंक्ति" में बड़ा हो जाता है तो 'सी (सत्य, प्रतिनिधि (गलत, 7)' (7 होने के साथ एन -1) को पठनीय और संक्षिप्त विकल्प के रूप में उपयोग किया जा सकता है। –

+0

यह बहुत अच्छा है –

+0

क्या आप उपर्युक्त कोड की व्याख्या करें? calld [! c (सत्य, गलत),] –