As suggested in @Swiss12000's comment, the argument trace = FALSE can be passed to train to suppress the messages.
This behaviour is not documented in ?train because the parameter is passed (via ...) to the method nnet. trace = FALSE will only work for methods that support this parameter. In other cases, the capture.output approach below might still be useful.
caret::train prints messages to stdout, unsolicitedly. That's nasty. The output can be suppressed by wrapping the expression in capture.output():
garbage <- capture.output(train <- train(Species~.,data=iris,method="nnet",trControl=tc))
Note that this is one of the cases where the differentce between the assignment operators matters: capture.output(train = train(... doesn't work, probably because the assignment is interpreted as an argument to train().
In order to additionally suppress the package startup messages, add the chunk option message = FALSE.
---
title: "test"
output: html_document
---
```{r echo=FALSE, message = FALSE}
library(caret)
tc <- trainControl(method = "boot",number = 25)
garbage <- capture.output(
train <- train(Species ~ ., data = iris, method = "nnet", trControl = tc))
confusionMatrix(train)
```
Output:
test
## Bootstrapped (25 reps) Confusion Matrix
##
## (entries are percentages of table totals)
##
## Reference
## Prediction setosa versicolor virginica
## setosa 33.8 0.0 0.0
## versicolor 0.0 31.0 1.1
## virginica 0.0 2.0 32.1