2016-04-26 22 views
7

Bir .Rmd dosyası örüyorum ve iki çıkışa sahip olmak istiyorum: her defasında örgü çalıştığım html ve bir purl'ed R betiği. Eğer yığın isim yoksapurl() knit() içinde yinelenen etiket hatası var

--- 
title: "Purl MWE" 
output: html_document 
--- 

```{r} 
## This chunk automatically generates a text .R version of this script when  running within knitr. 
input = knitr::current_input() # filename of input document 
output = paste(tools::file_path_sans_ext(input), 'R', sep = '.') 
knitr::purl(input,output,documentation=1,quiet=T) 
``` 

```{r} 
x=1 
x 
``` 

, iyi çalışıyor ve aldığınız html ve .R çıkışı sen örgü çalıştırmak her zaman() (veya RStudio örme tıklayın): Bu şu RMD dosyası ile yapılabilir . Eğer yığın isim ise

Ancak başarısız olur. Örneğin: purl() çağrısı açýklama ise

Quitting from lines 7-14 (Purl.Rmd) 
Error in parse_block(g[-1], g[1], params.src) : duplicate label 'test' 
Calls: <Anonymous> ... process_file -> split_file -> lapply -> FUN -> parse_block 
Execution halted 

, bu adlandırılmış yığın çalışır:


title: "Purl MWE" 
output: html_document 
--- 

```{r} 
## This chunk automatically generates a text .R version of this script when  running within knitr. 
input = knitr::current_input() # filename of input document 
output = paste(tools::file_path_sans_ext(input), 'R', sep = '.') 
knitr::purl(input,output,documentation=1,quiet=T) 
``` 


```{r test} 
x=1 
x 
``` 

O başarısız olur. Dolayısıyla, purl() çağrısının, çoğaltmalar olmasa bile yinelenen yığın isimleri olduğunu düşünmesi için knit() nedenine neden olan parçaların adlarını da eklemeyle ilgili bir şey vardır.

Bir .Rmd dosyasının içine bir purl() komutu eklemenin bir yolu var mı bu yüzden her iki çıktı (html ve R) üretilir? Yoksa bunu yapmanın daha iyi bir yolu var mı? Nihai amacım, sitenin her derlendiği zaman HTML ve R çıktılarını güncelleyen bir web sitesi oluşturmak için yeni rmarkdown::render_site()'u kullanmaktır.

+1

Bunu hiç anladın mı? – Jordan

+0

Ben de bu problemi yaşıyorum ... çok sinir bozucu. Benim parçalarımı adlandırmak istiyorum ve şu an bunun nedeni ile yapamam. – Nova

cevap

2

aşağıdaki gibi dosya içinde options(knitr.duplicate.label = 'allow') dahil ederek yinelenen etiketleri izin verebilirsiniz:

title: "Purl MWE" 
output: html_document 
--- 

```{r GlobalOptions} 
options(knitr.duplicate.label = 'allow') 
``` 


```{r} 
## This chunk automatically generates a text .R version of this script when  running within knitr. 
input = knitr::current_input() # filename of input document 
output = paste(tools::file_path_sans_ext(input), 'R', sep = '.') 
knitr::purl(input,output,documentation=1,quiet=T) 
``` 


```{r test} 
x=1 
x 
``` 

Bu kod knitr web sitesinde belgelenen, ancak Github doğrudan son değişiklikler ile takip edebilirsiniz: https://github.com/yihui/knitr/blob/master/NEWS.md

+1

Bu iyi bir çözüm olsa da, bu biraz riskli. Üretilen rakamlara sahip parçalarda gerçekten çoğaltılan etiketler (purl problemi dışında) varsa, aynı isimle farklı yerlerde üretilen bazı görüntüleri kaybedebilirsiniz. Sadece dikkatli ol. –

İlgili konular