2015-01-07 17 views
14

मैं list.files() के साथ प्रयोग करना किया गया है और मैं 010.csv के माध्यम से ही सूची 001.csv करना चाहता था और मैं इस आदेश के साथ आया था:का उद्देश्य क्या है। * \?

list_files <- list.files(directory, pattern = ".*\\000|010", full.names = TRUE) 

इस कोड को मुझे देता है कि मैं क्या चाहता हूँ, लेकिन मैं पूरी तरह से समझ में नहीं आता क्या हो रहा है पैटर्न तर्क के साथ। pattern = .*\\\000 कैसे काम करता है?

+3

आप उस आदेश के साथ कैसे आए? मैं चौंक गया यह काम किया। मुझे लगता है कि आपको "" 00 \\ d \\। Csv | 010 \\। Csv "जैसा कुछ लगता है, इस पर निर्भर करता है कि आपको कितना विशिष्ट होना चाहिए। – Gregor

+0

मुझे नहीं लगता था कि "\\ 0" 'वैसे भी एक वैध रेगेक्स एस्केपमेंट था, जब तक इसे '0" ' –

+1

ग्रेगोर के रूप में नहीं माना जाता है, तो मैंने 00 *, 0 * 0, * 00 की विविधताओं के साथ शुरुआत की, के बारे में पढ़ें। * \\ कहीं। मैं इसके साथ गड़बड़ कर दिया। * \\ यह जानने के बिना कि यह वास्तव में क्या करता है। यह सिर्फ मेरे लिए काम खत्म हो गया। – Chris

उत्तर

14

\\0 एक बैकरेफर है जो उस बिंदु पर पूरे रेगेक्स मैच को सम्मिलित करता है। देखने के लिए कि क्या मतलब हो सकता है निम्नलिखित की तुलना करें:

sub("he", "", "hehello") 
## [1] "hello" 
sub("he\\0", "", "hehello") 
## [1] "llo" 
"001.csv" या "009.csv" तरह तार के साथ

, क्या होता है कि .* मैचों वर्ण शून्य है, \\0 उन शून्य वर्ण एक बार दोहराता है, और 00 पहले दो मैचों स्ट्रिंग में शून्य। सफलता!

यह पैटर्न क्योंकि यह कुछ भी मैच के लिए कि दोगुनी है और फिर तुरंत दो 0 रों के बाद नहीं मिल सकता है नहीं मैच "100.csv" या "010.csv" होगा। यह होगा, हालांकि, "1100.csv" से मेल खाता है, क्योंकि यह 1 से मेल खाता है, फिर इसे दोगुना करता है, और फिर दो 0 एस पाता है।

तो, ".*\\000"xx00 से शुरू होने वाली किसी भी स्ट्रिंग से मेल खाने के लिए x शून्य या अधिक वर्णों के किसी भी सबस्ट्रिंग के लिए खड़ा है। यही है, यह दो बार दोहराया जाता है और फिर दो शून्य से अनुयायी होता है।

+1

' 100.c' नाम की एक फ़ाइल '"। * 00 "से मेल खाती है। 'लेकिन *" \\ 000 "' से मेल नहीं खाता है। तो '\\ 0' का कुछ प्रभाव पड़ा है। – unutbu

+0

मैं इस परीक्षण स्ट्रिंग के साथ खेल रहा हूं: 'सी (" 001.csv "," 008.csv "," 007.csv "," 009.csv "," 010.csv "," 011.csv ", "101.csv", "110.csv", "100.csv") ' – Gregor

+0

@unutbu - ठीक है, उस उपयोगी सूचक के साथ, मुझे लगता है कि मैंने इसे समझ लिया। धन्यवाद। –

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