Параллель карета в Rmarkdown: отсутствует подробная информация при использовании render () - PullRequest
7 голосов
/ 31 октября 2019

У меня есть следующий простой пример 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. Используйте кнопку Knit в Rstudio
  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.

Ответы [ 2 ]

1 голос
/ 13 ноября 2019

Это может привести к тому, что вы ищете, адаптировано из здесь , оно по существу копируется, когда вы используете кнопку knit в rstudio, которая выдает подробный текст из train, но с использованиемэтот метод вы должны быть в состоянии передать от parameters до render. Просто измените путь к 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)))
0 голосов
/ 09 ноября 2019

Вы можете добавить knit_hook в верхней части файла Rmd, чтобы захватить выходные данные консоли и распечатать их во время рендеринга.

```{r, include=FALSE}
print_output <- function(x, options) {
  cat(x)
  return(x)
}
knitr::knit_hooks$set(chunk = print_output)
```
...