是否可以使用 "print()" 调试 R Markdown 块以在控制台上查看某些变量?
Is it possible to debug an R Markdown chunk using "print()" to see certain variables on console?
在 R Markdown 中出现以下错误:
|......................................................................| 100%
label: heatmap_placement (with options)
List of 2
$ echo : logi TRUE
$ results: chr "asis"
Quitting from lines 176-230 (summary_report_v03.Rmd)
Error in readChar(con, 5L, useBytes = TRUE) : cannot open the connection
Calls: hmp2rep ... withCallingHandlers -> withVisible -> eval -> eval -> load -> readChar
我收到此错误似乎是因为它无法打开 R 代码块中的某些文件(这是一段带有一些嵌套 for 循环的代码)。
为了调试,我使用了一些“print()”函数来检查一些变量并查看屏幕上的错误。但是,由于错误在一个块中,所以我看不到任何东西。
是否可以使用“print()”函数调试 Rmd 块以查看内部发生的情况?不然我怎么猜bug在哪里?
如果您将块选项设置为不在文档中包含消息,则可以使用 message()
来完成。例如,
```{r message=FALSE}
x <- runif(1)
message(x)
```
另一种可能性是将未使用的块选项设置为字符串,例如
```{r chunkmsg=paste("x = ", x)}
y <- 1
```
同时使用这两个将其打印到控制台:
|.................. | 25%
ordinary text without R code
|................................... | 50%
label: unnamed-chunk-1 (with options)
processing file: Untitled.Rmd
List of 1
$ message: logi FALSE
|.................................................... | 75%
ordinary text without R code
|......................................................................| 100%
label: unnamed-chunk-2 (with options)
List of 1
$ chunkmsg: chr "x = 0.287577520124614"
0.287577520124614
output file: Untitled.knit.md
/Applications/RStudio.app/Contents/MacOS/pandoc/pandoc +RTS -K512m -RTS Untitled.knit.md --to html4 --from markdown+autolink_bare_uris+tex_math_single_backslash --output Untitled.html --lua-filter /Library/Frameworks/R.framework/Versions/4.1/Resources/library/rmarkdown/rmarkdown/lua/pagebreak.lua --lua-filter /Library/Frameworks/R.framework/Versions/4.1/Resources/library/rmarkdown/rmarkdown/lua/latex-div.lua --self-contained --variable bs3=TRUE --standalone --section-divs --template /Library/Frameworks/R.framework/Versions/4.1/Resources/library/rmarkdown/rmd/h/default.html --no-highlight --variable highlightjs=1 --variable theme=bootstrap --include-in-header /var/folders/d6/s97fjjxd3_9353x_lwb692100000gn/T//Rtmp4tTiD4/rmarkdown-str44473d4f8885.html --mathjax --variable 'mathjax-url:https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'
Output created: Untitled.html
注意 chunkmsg
字符串出现在块列表中,而 message()
字符串出现在所有块列表之后。在某些情况下 message()
字符串会出现得更早;我认为这取决于以下块中的内容。
在 R Markdown 中出现以下错误:
|......................................................................| 100%
label: heatmap_placement (with options)
List of 2
$ echo : logi TRUE
$ results: chr "asis"
Quitting from lines 176-230 (summary_report_v03.Rmd)
Error in readChar(con, 5L, useBytes = TRUE) : cannot open the connection
Calls: hmp2rep ... withCallingHandlers -> withVisible -> eval -> eval -> load -> readChar
我收到此错误似乎是因为它无法打开 R 代码块中的某些文件(这是一段带有一些嵌套 for 循环的代码)。
为了调试,我使用了一些“print()”函数来检查一些变量并查看屏幕上的错误。但是,由于错误在一个块中,所以我看不到任何东西。
是否可以使用“print()”函数调试 Rmd 块以查看内部发生的情况?不然我怎么猜bug在哪里?
如果您将块选项设置为不在文档中包含消息,则可以使用 message()
来完成。例如,
```{r message=FALSE}
x <- runif(1)
message(x)
```
另一种可能性是将未使用的块选项设置为字符串,例如
```{r chunkmsg=paste("x = ", x)}
y <- 1
```
同时使用这两个将其打印到控制台:
|.................. | 25%
ordinary text without R code
|................................... | 50%
label: unnamed-chunk-1 (with options)
processing file: Untitled.Rmd
List of 1
$ message: logi FALSE
|.................................................... | 75%
ordinary text without R code
|......................................................................| 100%
label: unnamed-chunk-2 (with options)
List of 1
$ chunkmsg: chr "x = 0.287577520124614"
0.287577520124614
output file: Untitled.knit.md
/Applications/RStudio.app/Contents/MacOS/pandoc/pandoc +RTS -K512m -RTS Untitled.knit.md --to html4 --from markdown+autolink_bare_uris+tex_math_single_backslash --output Untitled.html --lua-filter /Library/Frameworks/R.framework/Versions/4.1/Resources/library/rmarkdown/rmarkdown/lua/pagebreak.lua --lua-filter /Library/Frameworks/R.framework/Versions/4.1/Resources/library/rmarkdown/rmarkdown/lua/latex-div.lua --self-contained --variable bs3=TRUE --standalone --section-divs --template /Library/Frameworks/R.framework/Versions/4.1/Resources/library/rmarkdown/rmd/h/default.html --no-highlight --variable highlightjs=1 --variable theme=bootstrap --include-in-header /var/folders/d6/s97fjjxd3_9353x_lwb692100000gn/T//Rtmp4tTiD4/rmarkdown-str44473d4f8885.html --mathjax --variable 'mathjax-url:https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'
Output created: Untitled.html
注意 chunkmsg
字符串出现在块列表中,而 message()
字符串出现在所有块列表之后。在某些情况下 message()
字符串会出现得更早;我认为这取决于以下块中的内容。