2012-05-15 13 views
14

बनाने के दौरान "\ +" शुरू होने वाली वर्ण स्ट्रिंग में एक अपरिचित सहेजने वाला है, मैंने कुछ फ़ंक्शंस और स्क्रिप्ट्स (मैक पर एक्स 11 का उपयोग करके) का उपयोग करके पैकेज बनाने का प्रयास किया।एक त्रुटि [' +' आर पैकेज

temp = trim(unlist(strsplit(lp.add(ranefterms[[i]]), 
+      "\+"))) 
Error: '\+' is an unrecognized escape in character string starting "\+" 

oddest बात यह है कि मेरी समारोह वास्तव में है "\ +" नहीं है: एक ओर जहां आर अध्यक्ष एवं प्रबंध निदेशक की जांच अपने काम कर रहा था, यह एक समस्या के रूप में इस का सामना करना पड़ा। इसके बजाय, इसमें "\ \ +" है (नीचे देखें)। तो मुझे नहीं पता कि क्यों \ \ + "" \ "" के रूप में पहचाना जाता है।

for(i in 1:n) 
    temp = trim(unlist(strsplit(lp.add(ranefterms[[i]]), '\\+'))) 

थोड़ा और खोदने के लिए, मैंने Rcheck फ़ोल्डर में packageName-Ex.R फ़ाइल को देखा। जैसा कि यह निकला, सभी "\ \" को जांच प्रक्रिया में "\" में बदल दिया गया है (उदाहरण के लिए, मुझे स्ट्रस्प्लिट() और grepl()) जैसे

मुझे आश्चर्य है कि मुझे क्या लगता है हो सकता है कि इसका कारण हो। क्षमा करें कि मैं एक पुन: उत्पन्न उदाहरण के साथ नहीं आ सकता ...

उत्तर

13

अपमानजनक कोड आपकी सहायता फ़ाइलों में से एक के उदाहरण अनुभाग से आता है (यही कारण है कि यह packageName-Ex.R में समाप्त होता है)। इसे ठीक करने के लिए, अपने बैकस्लैश के साथ *.Rd दस्तावेज़ फ़ाइलों के उदाहरण अनुभागों में से प्रत्येक बैकस्लैश से बचें। (तो, प्रकार \\ संसाधित मदद फ़ाइल में \ प्राप्त करने के लिए, और \\\\ टाइप \\ मिलता है।)

जब तक वह भागे तो है, \ विशेष वर्ण कि \author तरह सेक्शनिंग को दिखाता है और निशान-अप मैक्रो (यानी आदेशों के रूप में व्याख्या की है , \description, \bold, और \ldots)। डंकन मर्डोक की Parsing Rd files (इस विषय के लिए सरकारी पुस्तिका) से हवाला देते हुए:

बैकस्लैश \ एक भागने चरित्र के रूप में प्रयोग किया जाता है: \, \%, {और} दूसरे चरित्र का विशेष अर्थ को हटा दें।

क्या इस अभ्यास में की तरह दिखता है का एक उदाहरण के रूप में, यहाँ $R_SOURCE_HOME/src/library/base/man/grep.Rd का हिस्सा है, जो जब आप लिखते हैं ?grep या ?gsub मदद फ़ाइल आप देख बनाने के लिए संसाधित की जाती है।

## capitalizing 
txt <- "a test of capitalizing" 
gsub("(\\\\w)(\\\\w*)", "\\\\U\\\\1\\\\L\\\\2", txt, perl=TRUE) 
gsub("\\\\b(\\\\w)", "\\\\U\\\\1",  txt, perl=TRUE) 

संसाधित मदद फ़ाइल में, यह इस तरह दिखता है:

## capitalizing 
txt <- "a test of capitalizing" 
gsub("(\\w)(\\w*)", "\\U\\1\\L\\2", txt, perl=TRUE) 
gsub("\\b(\\w)", "\\U\\1",  txt, perl=TRUE) 
+0

@ जोश-OBrien धन्यवाद। सहायता फ़ाइल वास्तव में समस्या थी। क्या आप जानते हैं कि यह एक समस्या क्यों है? मैंने अतीत में एक पैकेज बनाया और इसी तरह की समस्या का सामना नहीं किया - मैंने किसी भी "\\" s को "\\\\" में नहीं बदला। – Alex

+0

@ एक्सएच - यह कुछ नया नहीं है, इसलिए मैं शर्त लगाऊंगा कि आपके पिछले पैकेज में आपके उदाहरणों में कोई '\\' नहीं था, ** या ** कि कोई भी उदाहरण '\ dontrun के अंदर था {} 'ब्लॉक, ** या ** कि आपने आर सीएमडी चेक नहीं चलाया है। याद रखें, आपके किसी भी पैक किए गए कार्यों में कोड के साथ ऐसा करने में कोई समस्या नहीं है। इसके बजाए, यह * * आरडी' फाइलों के तरीके से संसाधित किया जाता है। –