假设我有一个函数,它接受一些参数k并返回另一个带参数n但k在函数体中使用的函数.
makeFn <- function(k) {
function(n){
rep(k,n)
}
}
five <- makeFn(5)
five(3)
# [1] 5 5 5
body(five)
# {
# rep(k, n)
# }
Run Code Online (Sandbox Code Playgroud)
我怎样才能打印出five它所显示的身体rep(5,n)而不是rep(k,n)?
当尝试将包含脚本中的行knit的.Rmd转换为父.Rmd时,这些块不完整,只会形成代码块.我希望能够正常输出文件.read_chunkpurlknit
main.Rmd
---
output: html_document
---
```{r, include=FALSE}
knitr::read_chunk("script_chunk.R")
```
### Print sessionInfo()
```{r, ref.label='script_chunk', eval=FALSE}
```
Run Code Online (Sandbox Code Playgroud)
script_chunk.R
# ---- script_chunk
sessionInfo()
Run Code Online (Sandbox Code Playgroud)
当我处理这个时,knit("main.Rmd", "output.Rmd")会生成以下文件:
---
output: html_document
---
### Print sessionInfo()
```r
sessionInfo()
```
Run Code Online (Sandbox Code Playgroud)
但是,块的所需输出是:
```{r script_chunk}
sessionInfo()
```
Run Code Online (Sandbox Code Playgroud)
当我knit 输出.Rmd时,我只得到一个未评估的代码块,因为该块缺少花括号(最好是块名称).
我可以readLines用来实现我所追求的目标,例如:
```{r, results='asis', collapse=TRUE, echo=FALSE}
cat("```{r script_chunk}\n")
cat(paste(readLines("script_chunk.R"), "\n", collapse = ""))
cat("```\n")
```
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方式来做到这一点?