जैसा कि जोश ओ'ब्रायन ने कहा। आर में caseless मिलान पर थोड़ा विस्तार करने के लिए, कि वास्तव में नियमित अभिव्यक्ति
(जैसे grep
और grepl
का प्रयोग करके) इस मामले में आप mapply
और grepl
इस तरह इस्तेमाल कर सकते हैं के साथ संभव है, बशर्ते आप एकल वर्ण मिलान कर रहे हैं:
C1 <- rep('ab',length(A1))
mapply(grepl,A1,C1,ignore.case=TRUE)
# a A a a A A a
# TRUE TRUE TRUE TRUE TRUE TRUE TRUE
यह या आप क्या चाहते हैं नहीं हो सकता है हो सकता है:
A1 <- c("a", "A", "a", "a", "A", "A", "a")
B1 <- c(rep("a", length(A1)))
mapply(grepl,A1,B1,ignore.case=TRUE)
# a A a a A A a
# TRUE TRUE TRUE TRUE TRUE TRUE TRUE
आप, क्योंकि यह भी इस तरह आंशिक स्ट्रिंग के से मेल खाता है, हालांकि सावधान रहना होगा।
D1 <- c('abc','aBc','Abc','ABc','aBC')
grepl('a(?i)bc',D1) # caseless matching on B and C
# [1] TRUE TRUE FALSE FALSE TRUE
grepl('a(?i)b(?-i)c',D1) # caseless matching only on B
# [1] TRUE TRUE FALSE FALSE FALSE
स्रोत
2011-12-02 20:04:33
+1:
एक sidenote पर, यदि आप नियमित अभिव्यक्ति के साथ मेल खाते हैं और आप मामले को अनदेखा करना चाहते हैं, आप भी caseless मिलान चालू करने के लिए का निर्माण
(?i)
उपयोग कर सकते हैं और(?-i)
caseless मिलान बंद करने के लिए यह एक मजेदार और सूचनात्मक जोड़ है। यदि आप 'grepl' और _not_ को सबस्ट्रिंग मैचों को स्वीकार नहीं करना चाहते हैं, तो मुझे लगता है कि आप' mapply (grepl, a1, c1, ignore.case = TRUE) और मैप्ली (grepl, c1, A1, ignore.case = TRUE) कर सकते हैं। । –@ जोशो'ब्रायन: आप वास्तव में कर सकते हैं, लेकिन वह संरचना दक्षता में उत्कृष्टता के लिए असंभव है ... ;-) –
यूप। और कोड गोल्फ के विपरीत जो कुछ भी है, यह एक प्रतियोगी है! –