提问人:Malta 提问时间:12/4/2017 最后编辑:Malta 更新时间:12/4/2017 访问量:594
如何使用 render 在 R Rmarkdown 文件中的函数中使用变量
How to use a variable inside a function in a R Rmarkdown file, using render
问:
我有一个 rmarkdown 文件,我用它来编织:我在 .R,然后,我使用函数编织了 Rmd。我的问题是,如果我封装渲染函数以使我的代码更具可读性,它就不再起作用了。下面是一个基本的例子:
-我。Rmd 文件:rmarkdown::render
---
title: "test"
output: html_document
---
```{r}
printA()
```
我的R代码可以工作:
library(rmarkdown)
a<- 5
printA <- function() {
return(a)
}
render("c:/users/db7trs/desktop/test.Rmd")
但是当我将其封装在一个函数中时,它不再起作用了:
library(rmarkdown)
printA <- function() {
return(a)
}
rendre <- function(){
a <- 5
render("c:/users/db7trs/desktop/test.Rmd")
}
rendre()
使用此代码,我有一个非常明确的错误:。Quitting from lines 7-8 Error in printA() : object 'a' not found
如果我显式地对 printA 函数进行参数,这个问题将很容易解决,在这种情况下,这无论如何都是一个很好的做法,但我不明白为什么它在这两种情况下的工作方式不同。
答:
2赞
Sébastien Rochette
12/4/2017
#1
您的问题更多的是该函数未在函数中声明。(即使错误消息说的是 )。因此,您可以在文件内部或内部声明您的函数。printA
rendre()
a
rendre()
Rmd
内部功能rendre()
rendre <- function(){
printA <- function() {
return(a)
}
a <- 5
render("c:/users/db7trs/desktop/test.Rmd")
}
或者在test.Rmd
---
title: "test"
output: html_document
---
```{r}
printA <- function() {
return(a)
}
printA()
```
评论
0赞
Malta
12/4/2017
我很迷茫:你的解决方案有效,所以我想同意问题确实出在函数声明上,但另一方面,如果函数 printA 返回 1 而不是 a,它也有效,尽管它不应该与您的假设一起使用(除非我误解了什么)
0赞
Sébastien Rochette
12/4/2017
真。全球环境与本地环境有一些东西,但我不能给你确切的解释......
下一个:在中介模型中找不到对象
评论