Rmarkdown 中的 Caret doparallel:使用 render() 时缺少详细信息
Caret doparallel in Rmarkdown: Missing verbose info when using render()
我有以下简单示例 Rmarkdown
文档 (test.Rmd):
---
title: "Test Knit Caret Paralell VerboseIter"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
require(caret)
require(doParallel)
```
## data
```{r data}
set.seed(998)
training <- twoClassSim()
```
## model
```{r fitmodel}
fitControl <- trainControl(
method = "repeatedcv",
number = 3,
repeats = 2,
verboseIter = T)
ncores <- detectCores()-1
cl <<- makePSOCKcluster(ncores, verbose = TRUE, outfile = "")
registerDoParallel(cl)
set.seed(825)
Fit <- train(Class ~ .,
data = training,
method = "nnet",
trControl = fitControl,
trace = FALSE
)
stopCluster(cl)
registerDoSEQ()
```
## results
```{r results}
Fit
```
我有几个选择运行这个代码或者编织文档
- 在 Rstudio 中使用 'Run all chuncks'
- 在 Rstudio 中使用
Knit
按钮
Knit
文档 render("test.Rmd")
发生以下情况
- 没有信息在迭代中打印在输出或控制台中
- 信息打印在
R markdown
面板中
- 控制台中未打印任何信息
在我工作的项目中,我想 knit
具有不同参数的文档,所以我想使用最后一个选项。不过,我也想看看拟合模型的进展情况。因此我想使用选项 3。
如何在呈现文档时获取打印在控制台中的迭代信息?
这是我希望看到的预期输出:
+ Fold1.Rep1: size=1, decay=0e+00
+ Fold1.Rep1: size=3, decay=0e+00
+ Fold1.Rep1: size=5, decay=0e+00
- Fold1.Rep1: size=1, decay=0e+00
+ Fold1.Rep1: size=1, decay=1e-01
- Fold1.Rep1: size=3, decay=0e+00
+ Fold1.Rep1: size=3, decay=1e-01
- Fold1.Rep1: size=5, decay=0e+00
+ Fold1.Rep1: size=5, decay=1e-01
- Fold1.Rep1: size=1, decay=1e-01
+ Fold1.Rep1: size=1, decay=1e-04
- Fold1.Rep1: size=3, decay=1e-01
+ Fold1.Rep1: size=3, decay=1e-04
- Fold1.Rep1: size=1, decay=1e-04
etc.
您可以在 Rmd 文件的顶部添加一个 knit_hook
以捕获控制台输出并在渲染时打印它们。
```{r, include=FALSE}
print_output <- function(x, options) {
cat(x)
return(x)
}
knitr::knit_hooks$set(chunk = print_output)
```
这可能会产生您正在寻找的内容,改编自 ,当您在 rstudio
中使用 knit
按钮时,它基本上会复制,这会产生 [=] 的详细信息13=],但是使用此方法,您应该能够将 parameters
传递给 render
。只需将路径更改为 rmd
文件
的 wd
owd = setwd("path/to/your-Rmd-directory")
system2("Rscript", c("-e", shQuote("library(rmarkdown); render('test.Rmd')"),
system2("html", "test.html"),
setwd(owd)))
我有以下简单示例 Rmarkdown
文档 (test.Rmd):
---
title: "Test Knit Caret Paralell VerboseIter"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
require(caret)
require(doParallel)
```
## data
```{r data}
set.seed(998)
training <- twoClassSim()
```
## model
```{r fitmodel}
fitControl <- trainControl(
method = "repeatedcv",
number = 3,
repeats = 2,
verboseIter = T)
ncores <- detectCores()-1
cl <<- makePSOCKcluster(ncores, verbose = TRUE, outfile = "")
registerDoParallel(cl)
set.seed(825)
Fit <- train(Class ~ .,
data = training,
method = "nnet",
trControl = fitControl,
trace = FALSE
)
stopCluster(cl)
registerDoSEQ()
```
## results
```{r results}
Fit
```
我有几个选择运行这个代码或者编织文档
- 在 Rstudio 中使用 'Run all chuncks'
- 在 Rstudio 中使用
Knit
按钮 Knit
文档render("test.Rmd")
发生以下情况
- 没有信息在迭代中打印在输出或控制台中
- 信息打印在
R markdown
面板中 - 控制台中未打印任何信息
在我工作的项目中,我想 knit
具有不同参数的文档,所以我想使用最后一个选项。不过,我也想看看拟合模型的进展情况。因此我想使用选项 3。
如何在呈现文档时获取打印在控制台中的迭代信息?
这是我希望看到的预期输出:
+ Fold1.Rep1: size=1, decay=0e+00
+ Fold1.Rep1: size=3, decay=0e+00
+ Fold1.Rep1: size=5, decay=0e+00
- Fold1.Rep1: size=1, decay=0e+00
+ Fold1.Rep1: size=1, decay=1e-01
- Fold1.Rep1: size=3, decay=0e+00
+ Fold1.Rep1: size=3, decay=1e-01
- Fold1.Rep1: size=5, decay=0e+00
+ Fold1.Rep1: size=5, decay=1e-01
- Fold1.Rep1: size=1, decay=1e-01
+ Fold1.Rep1: size=1, decay=1e-04
- Fold1.Rep1: size=3, decay=1e-01
+ Fold1.Rep1: size=3, decay=1e-04
- Fold1.Rep1: size=1, decay=1e-04
etc.
您可以在 Rmd 文件的顶部添加一个 knit_hook
以捕获控制台输出并在渲染时打印它们。
```{r, include=FALSE}
print_output <- function(x, options) {
cat(x)
return(x)
}
knitr::knit_hooks$set(chunk = print_output)
```
这可能会产生您正在寻找的内容,改编自 rstudio
中使用 knit
按钮时,它基本上会复制,这会产生 [=] 的详细信息13=],但是使用此方法,您应该能够将 parameters
传递给 render
。只需将路径更改为 rmd
文件
wd
owd = setwd("path/to/your-Rmd-directory")
system2("Rscript", c("-e", shQuote("library(rmarkdown); render('test.Rmd')"),
system2("html", "test.html"),
setwd(owd)))