Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Knitr不';在列表中使用自定义knit函数和求值quoted函数时,无法从上一个块中找到函数_R_R Markdown_Knitr - Fatal编程技术网

Knitr不';在列表中使用自定义knit函数和求值quoted函数时,无法从上一个块中找到函数

Knitr不';在列表中使用自定义knit函数和求值quoted函数时,无法从上一个块中找到函数,r,r-markdown,knitr,R,R Markdown,Knitr,我遇到过一些奇怪的情况,当一个块找不到前一个块中定义的函数时,编写R标记文档失败 我在下面(尽我所能)隔离了其中一个,这就是它失败的原因: 手动运行每个区块时,运行没有问题 只有在YAML标题中使用自定义编织功能时,编织才会失败 knitr仅当Ieval引用表达式且在列表/映射函数中(lappy或purrr::)时才能找到函数 i、 e.如果我做eval(an_eval[[1]])就没有问题 可复制的Rmd文件内容 --- output: html_document knit: (

我遇到过一些奇怪的情况,当一个块找不到前一个块中定义的函数时,编写R标记文档失败

我在下面(尽我所能)隔离了其中一个,这就是它失败的原因:

  • 手动运行每个区块时,运行没有问题
  • 只有在YAML标题中使用自定义编织功能时,编织才会失败
  • knitr仅当I
    eval
    引用表达式且在列表/映射函数中(
    lappy
    purrr::
    )时才能找到函数
    • i、 e.如果我做
      eval(an_eval[[1]])就没有问题
可复制的Rmd文件内容

---
output:
  html_document

knit: (function(input, encoding) {
    rmarkdown::render(
      input = input,
      encoding = encoding,
      output_file = 'a_file.html'
    )
  })
---

```{r}
library(knitr)
```

```{r define_function}
a_function <- function() return("a function")
```

```{r runs_fine}
a_function()
```

```{r this_fails}
an_exprs <- list(quote(a_function()))
lapply(an_exprs, eval)
```

在这种情况下,需要指定
rmarkdown::render()
envir
参数,否则默认环境是
parent.frame()
,这是在YAML中为
knit
提供的(匿名)函数的内部环境

---
output:
  html_document

knit: (function(input, encoding) {
    rmarkdown::render(
      input = input,
      encoding = encoding,
      envir = globalenv()
    )
  })
---

```{r}
library(knitr)
```

```{r define_function}
a_function <- function() return("a function")
```

```{r runs_fine}
a_function()
```

```{r this_fails}
an_exprs <- list(quote(a_function()))
lapply(an_exprs, eval)
```
---
输出:
html_文件
针织:(功能(输入、编码){
rmarkdown::render(
输入=输入,
编码=编码,
envir=globalenv()
)
})
---
```{r}
图书馆(knitr)
```
```{r define_function}

a_函数是的,谢谢!!我想这已经在不同的地方折磨了我一段时间了,我不明白。
> sessionInfo()
R version 3.6.3 (2020-02-29)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Catalina 10.15.4

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] knitr_1.28
---
output:
  html_document

knit: (function(input, encoding) {
    rmarkdown::render(
      input = input,
      encoding = encoding,
      envir = globalenv()
    )
  })
---

```{r}
library(knitr)
```

```{r define_function}
a_function <- function() return("a function")
```

```{r runs_fine}
a_function()
```

```{r this_fails}
an_exprs <- list(quote(a_function()))
lapply(an_exprs, eval)
```