2015-08-15 24 views
5

this site açıklandığı gibi, bir Rmarkdown dosyasının YAML üstbilgisinde parametreleri tanımlamak mümkündür ve burada belirtilen varsayılan değerler rmarkdown::render("foo.Rmd", params = list(param1 = "bar") ile üzerine yazılabilir. Bunu deneyin Ancak aşağıdaki hatayı alıyorum:Rmd belgelerinde paramık değiştirilemiyor

parametreler nesne zaten örme ortamda var olan params İşte

minimal tekrarlanabilir RMD belgedir hale tarafından üzerine edilemez. Dosya adının test.Rmd olduğunu varsayalım. Şimdi rmarkdown::render("test.Rmd", params = list(name = "Jordan") çalıştığınızda

--- 
title: "Test" 
output: pdf_document 
params: 
    name: Andreas 
--- 

Hello, my name is `r params$name`. 

yukarıda yazılı hatasıyla durur.

Bu benim sessionInfo() şudur: yardımcı için

R version 3.2.1 (2015-06-18) 
Platform: x86_64-apple-darwin14.4.0 (64-bit) 
Running under: OS X 10.10.4 (Yosemite) 

locale: 
[1] de_DE.UTF-8/de_DE.UTF-8/de_DE.UTF-8/C/de_DE.UTF-8/de_DE.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] knitr_1.11  rmarkdown_0.7.3 

loaded via a namespace (and not attached): 
[1] Rcpp_0.12.0  XML_3.98-1.3  digest_0.6.8  MASS_7.3-40  grid_3.2.1  
[6] plyr_1.8.3  gtable_0.1.2  magrittr_1.5  scales_0.2.5  ggplot2_1.0.1 
[11] stringi_0.5-5 reshape2_1.4.1 jwiDlst_0.1.1 proto_0.3-10  tools_3.2.1  
[16] stringr_1.0.0 munsell_0.4.2 yaml_2.1.13  parallel_3.2.1 colorspace_1.2-6 
[21] htmltools_0.2.6 

teşekkürler!

+0

kodunuz benim için iyi çalışıyor. – SabDeM

cevap

8

Hata iletisi, geçerli çalışma alanınızda zaten params adlı bir nesneye sahip olduğunuzu gösterir ve rmarkdown::render() numaralı telefonu aramadan önce onu (rm(params)) kaldırmanız gerekir. Geçerli ortamda nesneleri iki kez kontrol etmek için ls() kullanın. -

1

Alternatif seçenek envir = new.env() dahil ederek yeni bir ortamda belge örme:

Ben rmarkdown raporu sadece açıkça bir parçası olarak tanımlandı nesneleri kullandığından emin olmak her durumda bunu yapmak ister
rmarkdown::render("test.Rmd", params = list(name = "Jordan"), envir = new.env()) 

kendi kodu.