我有一个与rmarkdown::render
编织的rmarkdown文件:我在.R中进行所有数据处理然后,我使用函数编写Rmd。我的问题是,如果我封装了render函数以使我的代码更具可读性,它就不再起作用了。这是一个基本的例子:
- 我的.Rmd文件:
---
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函数的参数,这个问题很容易解决,在这种情况下无论如何都是一个很好的做法,但我不明白为什么它在这两种情况下的工作方式不同。
答案 0 :(得分: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()
```