2012-09-19 18 views
12

जब मैं वैक्टर के वेक्टर के माध्यम से लूप करता हूं, तो प्रत्येक पाश का परिणाम कई वैक्टर होता है। मैं उम्मीद करता हूं कि प्रत्येक पाश का परिणाम वेक्टर हो। कृपया निम्न उदाहरण देखें:वैक्टर के वेक्टर के माध्यम से लूप

> foo <- seq(from=1, to=5, by=1) 
> bar <- seq(from=6, to=10, by=1) 
> baz <- seq(from=11, to=15, by=1) 
> vects <- c(foo,bar,baz) 
> for(v in vects) {print(v)} 
[1] 1 
[1] 2 
[1] 3 
[1] 4 
[1] 5 
[1] 6 
[1] 7 
[1] 8 
[1] 9 
[1] 10 
[1] 11 
[1] 12 
[1] 13 
[1] 14 
[1] 15 

के रूप में मैं दिए गए तीन वैक्टर उम्मीद होती है यह अजीब है यह वेक्टर दिया पुनरावृति (चाहिए) में तीन बार, ग (foo, बार, baz)। कुछ की तरह:

[1] 1 2 3 4 5 
[1] 6 7 8 9 10 
[1] 11 12 13 14 15 

किसी को भी व्याख्या कर सकते हैं कारण है कि मैं कैसे परिणाम मैं (3 वैक्टर) रहा हूँ प्राप्त करने के लिए इस परिणाम (15 वैक्टर) और मिल रहा है?

+1

आर में वैक्टरों के वेक्टर के रूप में ऐसी कोई चीज़ नहीं है। समारोह 'सी' सिर्फ तीन वेक्टरों को जोड़ता है जो आप इसे एक लंबे वेक्टर में देते हैं। – Seth

+3

@ सेठ, * हाँ * वैक्टरों का एक वेक्टर है। एक सूची * * जे में जेनेरिक वेक्टर है और इसमें वैक्टर शामिल हो सकते हैं। हम उन्हें सूचियां कह सकते हैं लेकिन जहां तक ​​आर का संबंध है, यह एक वेक्टर है। (एक परमाणु वेक्टर की तुलना में, जिसमें केवल एक डेटा प्रकार होता है, एक सूची वेक्टर होती है जिसमें से तत्व किसी भी प्रकार का डेटा धारण कर सकते हैं।) –

+2

मुझे आश्चर्य है कि यह क्यों डाउनवॉट किया गया था? गलत क्या है? सवाल स्पष्ट और पुनरुत्पादित है, और अपेक्षित आउटपुट शामिल है। मुझे यह जानने के लिए नुकसान हुआ है कि यह क्यू डाउनवोट के योग्य क्यों था, खासकर एक टिप्पणी के बिना एक टिप्पणी क्यों ?! –

उत्तर

14

देखो क्या vects पर है:

> vects 
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 

c() मिलती है (इस मामले में) तीन वैक्टर, उन्हें एक ही वेक्टर में श्रृंखलाबद्ध। for() लूप में, v बदले में vects में प्रत्येक मान लेता है और इसे प्रिंट करता है, इसलिए परिणाम आप देखते हैं।

क्या आप तीन अलग वैक्टरों की सूची चाहते थे? यदि

> vects2 <- list(foo, bar, baz) 
> for(v in vects2) {print(v)} 
[1] 1 2 3 4 5 
[1] 6 7 8 9 10 
[1] 11 12 13 14 15 

दूसरे शब्दों में, वैक्टरों का संयोजन नहीं, वैक्टरों की एक सूची बनाएं।

+0

ग्रेट स्पष्टीकरण, धन्यवाद। – user1515534

2

vects <- c(foo,bar,baz) के लिए vects <- list(foo,bar,baz) का स्थान बदलें।

वैक्टरों के वेक्टर के रूप में ऐसी कोई चीज़ नहीं है (वास्तव में)।

+0

मैं अंतिम बिंदु पर अलग होना चाहता हूं; एक सूची * एक वेक्टर है (यह एक सामान्य वेक्टर है) और इसमें वैक्टर शामिल हो सकते हैं (जैसा कि आप दिखाते हैं), इसलिए ... ;-) –

+0

@ गैविनसिम्पसन साघ। सामान्य के रूप में सही, राजा गेविन! :) – joran

+0

+1 वैसे भी, और विशेष रूप से मुझे राजा कहने के लिए। मैं राज करता हूँ! :) –

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