2012-11-19 26 views
27

मान लें कि मेरे पास वेक्टर remove<- c(17,18,19,20,24,25,30,31,44,45) था। मैं वेक्टर में हर दूसरे मूल्य कैसे प्राप्त करूं? इस तरह: 17,19,24,30,44आर प्रत्येक अन्य तत्व को कैसे सूचीबद्ध करें?

मैं seq फ़ंक्शन का उपयोग करने की कोशिश कर रहा हूं: seq(remove, 2) लेकिन यह काफी काम नहीं करता है।

किसी भी मदद की बहुत सराहना की जाती है।

+0

निकालें [seq (1, लंबाई (निकालने के लिए), = 2 द्वारा)] – liuminzhao

+1

'seq' के लिए संरचना' seq (शुरू #, अंत #, अंतराल) है ' । तो कह रहा है कि 'seq (निकालें, 2)' आर बता रहा है: "सभी संख्याओं को हटाने में शुरू करें, और डिफ़ॉल्ट अंतराल (जो 1 है) तक गिनें जब तक आप 2 तक नहीं पहुंच जाते।" –

उत्तर

70
remove[c(TRUE, FALSE)] 

चाल करेंगे।


यह कैसे काम करता?

यदि आर में अनुक्रमण के लिए तार्किक वैक्टर का उपयोग किया जाता है, तो उनके मूल्य पुनर्नवीनीकरण किए जाते हैं यदि इंडेक्स वेक्टर मूल्य वाले वेक्टर से कम है।

यहां, वेक्टर remove में दस मान हैं। यदि इंडेक्स वेक्टर c(TRUE, FALSE) का उपयोग किया जाता है, तो वास्तविक कमांड है: remove[c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE)]

इसलिए, विषम अनुक्रमणिका संख्या वाले सभी मान चयनित हैं।

8

बस एक और विकल्प:

> remove[seq_along(remove) %% 2 > 0] 
[1] 17 19 24 30 44