小编Kev*_*eau的帖子

如何用解析变量打印函数体

假设我有一个函数,它接受一些参数k并返回另一个带参数nk在函数体中使用的函数.

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)

functional-programming r

6
推荐指数
1
解决办法
81
查看次数

当运行knit到.Rmd输出时,块无效

问题

当尝试将包含脚本中的行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)

有没有更优雅的方式来做到这一点?

r knitr

4
推荐指数
1
解决办法
428
查看次数

标签 统计

r ×2

functional-programming ×1

knitr ×1