2012-04-08 22 views
6

से मानदंड मिलान करने वाले आइटमों का चयन करना मेरे पास आर में एक संख्यात्मक वेक्टर है, जिसमें नकारात्मक और सकारात्मक दोनों संख्याएं होती हैं। मैं चिह्न (अब के लिए शून्य अनदेखी) के आधार पर सूची में संख्या को अलग करने के दो अलग सूचियों में, हैं:आर: वेक्टर

  • एक नया वेक्टर केवल ऋणात्मक संख्याओं
  • एक और युक्त वेक्टर युक्त केवल सकारात्मक संख्या

दस्तावेज दिखाता है कि डेटाफ्रेम में पंक्तियों/कॉलम/कोशिकाओं को चुनने के लिए यह कैसे करें - लेकिन यह वैक्टर AFAICT के साथ काम नहीं करता है।

यह कैसे किया जा सकता है (लूप के बिना)?

+0

बाहर कर देता है, मैं बस चयन मानदंड में वेक्टर के नाम का उपयोग कर सकते हैं का उपयोग कर सकते हैं। उदाहरण के लिए: negs <- temp [temp <0] –

उत्तर

10

यह बहुत आसानी से किया जाता है (NaN के लिए जोड़ा जांच):

d <- c(1, -1, 3, -2, 0, NaN) 

positives <- d[d>0 & !is.nan(d)] 
negatives <- d[d<0 & !is.nan(d)] 

तुम दोनों एनए और NaN को बाहर चाहते हैं, is.na() दोनों के लिए सच रिटर्न:

d <- c(1, -1, 3, -2, 0, NaN, NA) 

positives <- d[d>0 & !is.na(d)] 
negatives <- d[d<0 & !is.na(d)] 
+0

मैं चयन से NaNs को अनदेखा कैसे करूं? –

+0

मैंने उत्तर संपादित किया है। ध्यान दें कि d> 0 मोड लॉजिकल का वेक्टर है, is.nan (d) और is.na (d) के लिए समान है। मोड लॉजिकल के दो वैक्टरों को लागू करना और "तार्किक" चीज है। –

+0

धन्यवाद, आप एक स्टार हैं! –

1

यह "वर्ग ब्रैकेट" का उपयोग करके किया जा सकता है। एक नया वेक्टर बनाया गया है जिसमें उन मान शामिल हैं जो शून्य से अधिक हैं। चूंकि एक तुलना ऑपरेटर का उपयोग किया जाता है, यह बूलियन में मूल्यों को दर्शाएगा। इसलिए सटीक संख्यात्मक मान प्राप्त करने के लिए वर्ग ब्रैकेट का उपयोग किया जाता है।

d_vector<-(1,2,3,-1,-2,-3) 
new_vector<-d_vector>0 
pos_vector<-d_vector[new_vector] 
new1_vector<-d_vector<0 
neg_vector<-d_vector[new1_vector] 
0

purrr पैकेज को छानने वैक्टर के लिए कुछ उपयोगी कार्य शामिल हैं:

library(purrr) 
test_vector <- c(-5, 7, 0, 5, -8, 12, 1, 2, 3, -1, -2, -3, NA, Inf, -Inf, NaN) 

positive_vector <- keep(test_vector, function(x) x > 0) 
positive_vector 
# [1] 7 5 12 1 2 3 Inf 

negative_vector <- keep(test_vector, function(x) x < 0) 
negative_vector 
# [1] -5 -8 -1 -2 -3 -Inf 

तुम भी discard समारोह