2012-05-15 17 views
14

Oluşturduğum bazı işlevleri ve komut dosyalarını (Mac'te X11 kullanarak) kullanarak bir paket oluşturmaya çalıştım.Bir hata [' +' bir R paketini oluştururken " +" karakter dizisinde tanınmayan bir çıkıştır.

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

garip bir şey, ancak, benim işlevi aslında "\ +" sahip DEĞIL olmasıdır: R CMD onay çalışmalarını yaptığını ise şöyle, bir sorunla karşılaştı. Bunun yerine, "\" + (aşağıya bakın). Bu yüzden "\" + "neden" \ + "olarak tanındığını bilmiyorum.

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

Ben Rcheck klasöründe packageName-Ex.R dosyası baktık biraz daha kazmak için. Görüldüğü gibi, tüm \ "\" kontrol işleminde "\" olarak değiştirilmiştir (örneğin, strsplit() ve grepl()) gibi işlevler için gereken çift eğik çizgi (

bunun nedeni olabilir. Maalesef, tekrarlanabilir bir örnekle gelemediğim için üzgünüm ...

cevap

13

Hata kodu, yardım dosyalarınızdan birinin Örnekler bölümünden geliyor (bu yüzden packageName-Ex.R numaralı telefondan geliyor). Bunu düzeltmek için, *.Rd dokümantasyonunuzun Örnekler bölümündeki ters eğik çizgileri her defasında ikinci bir ters eğik çizgi ile kaçmanız yeterlidir. (Yani, tip \\ işlenmiş yardım dosyasında \ almak ve \\ almak için \\\\ yazın.)

o kaçtı sürece, \\author gibi (yani komutları kesit ve mark-up makro tanımlar özel karakter olarak yorumlanır \description, \bold ve \ldots). Duncan Murdoch en Parsing Rd files (bu konu için resmi manuel) alıntı:

ters eğik çizgi \ çıkış karakteri olarak kullanılır: \, \% {ve} ikinci karakterinin özel bir anlamı kaldırın. Bu uygulamada neye benzediğini bir örnek olarak

, burada ?grep veya ?gsub yazarken gördüğünüz yardım dosyası oluşturmak için işlenir $R_SOURCE_HOME/src/library/base/man/grep.Rd parçası vardır. İşlenmiş yardım dosyasında

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

, bu şuna benzer: Josh-obrien teşekkür @

## 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

. Yardım dosyası gerçekten sorun oldu. Bunun neden sorun olduğunu biliyor musun? Geçmişte bir paket oluşturdum ve benzer bir sorunla karşılaşmadım - "\\" lerden herhangi birini "\\\\" lerde değiştirmedim. – Alex

+0

@ X.He - Bu yeni bir şey değil, bu yüzden önceki paketinizin herhangi bir \\ 'örneğinizin, ** veya ** örneklerinde herhangi bir örneğinin' \ dontrun içinde olduğundan bahse girerim. {} 'blok, ** veya ** R CMD kontrolü yapmadıysanız. Unutmayın, bu paketlenmiş işlevlerinizin herhangi birindeki kodla ilgili bir sorun değildir. Bunun yerine, '* .Rd' dosyalarının işlenmesiyle ilgilidir. –