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

问题描述 投票:2回答:1

我有以下简单示例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
```

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

  1. 在Rstudio中使用“运行所有块”
  2. 在Rstudio中使用Knit按钮
  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.
r caret doparallel
1个回答
0
投票

您可以在Rmd文件的顶部添加knit_hook以捕获控制台输出并在渲染时打印它们。

```{r, include=FALSE}
print_output <- function(x, options) {
  cat(x)
  return(x)
}
knitr::knit_hooks$set(chunk = print_output)
```
© www.soinside.com 2019 - 2024. All rights reserved.