2017-02-01 2 views
1

rnotebook을 쓰고 있습니다. yaml에서 내가r 노트북의 매개 변수 수정

---                                                                               
title: "title"                                                                     
author: Me                                                                          
output: html_notebook                                                                          
inputs:                                                                              
    runDate: !r Sys.Date()-1                                                                         
---                                                                               

```{r, eval=FALSE}                                                                           
    params$stuff <- 'toto'                                                                          
```                                                                               

을하지만 rmarkdown::render('file.Rmd')을 수행 할 때 내가 Error in params$stuff = "toto" :cannot change value of locked binding for 'params'

을 얻고 그 이유는 무엇이며 어떻게 해결할 수 있습니까?

+0

동작에 대한 설명서를 찾을 수 없지만 실수로 매개 변수가 손상되는 것을 막을 수있는 적절한 방법이라고 생각합니다. 'params' 객체를 변경할 수있는 능력이 필요하다면,'local_params <- params; local_params $ stuff <- 'toto'' 그리고'local_params'를 사용하여 문서의 나머지 부분을 만듭니다. 이 작업을 자주 수행해야하는 경우 RMD를 제공 할 매개 변수를 결정하는 방법을 다시 고려해야 할 수 있습니다. – Benjamin

+0

@Benjamin 그게 내가 한 짓이야.하지만 사용자가 params를 수정하는 것을 막을 이유가 없다. ??? ??? – statquant

답변

2

해결책을 제공 한 unrelated issue에 대한 픽스를 통해 더 많은 정보를 얻었습니다.

?bindingIsLocked

당신은 내가 매개 변수가있는 보고서의 매개 변수를 변경에 대한 나의주의를 계속

```{r} 
bindingIsLocked("params", env = .GlobalEnv) 
unlockBinding("params", env = .GlobalEnv) 
params$stuff <- 'toto' 
``` 

와 결합 params 잠금을 해제 할 수 있습니다 참조하십시오.

+0

잘 했어, 고마워, 내가 파라메타 변경에 대해 당신의 포도주를 얻었는지 모르겠지만, 어쨌든, 그것을 원한다면 어쨌든, 그들이 사용자를 금지시키지 않는 것을 볼 수있는 많은 경우가있을 것이다. (이것은 내가 참을 수 없다) – statquant

+0

@statquant 나는 내 말을 먹기 위해 돌아온다. 나는 이것을 정확히 할 필요가있는 유스 케이스를 가지고있다. – Benjamin