Rmarkdown中的插入符doparallel:使用render()时缺少详细信息

Wie*_*314 8 r r-caret doparallel

我有以下简单的示例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
```
Run Code Online (Sandbox Code Playgroud)

我有几种选择来运行此代码或编织文档

  1. 在Rstudio中使用“运行所有块”
  2. KnitRstudio中的使用按钮
  3. Knit 与文件 render("test.Rmd")

发生以下情况

  1. 没有信息在迭代中输出或控制台中打印
  2. 信息打印在R markdown面板中
  3. 控制台中未打印任何信息

在我正在处理的项目中,我希望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.
Run Code Online (Sandbox Code Playgroud)

Mat*_*att 2

这可能会产生您正在寻找的内容,改编自here,当您使用knit中的按钮时rstudio,它本质上会复制,这会产生来自 的详细信息train,但是使用此方法,您应该能够传递parametersrender。只需更改文件wd的路径即可rmd

owd = setwd("path/to/your-Rmd-directory")
system2("Rscript", c("-e", shQuote("library(rmarkdown); render('test.Rmd')"),
            system2("html", "test.html"),
            setwd(owd)))
Run Code Online (Sandbox Code Playgroud)