У меня проблема, подобная проблеме, поднятой в 'R, knitr doesn't respect order of chunks and text'. В моем коде у меня есть текстовый заголовок, за которым следует кусок, который использует четыре вызова функции knitr :: kable для отображения четырех таблиц. Странно, что таблицы 1 и таблица 2 отображаются выше заголовка, а таблицы 3 и 4 ниже - в формате PDF. Похоже, что это связано с knitr, позволяющим объектам плавать. Могу ли я отключить это, предпочтительно, в функции knitr :: kable или в вариантах куска? Вот мой код:Как управлять порядком вывода из файла rmarkdown/knitr (или как предотвратить поплавок)
---
title: "Reproducible Error"
author: "Rex Macey"
date: "February 14, 2017"
output: pdf_document
header-includes:
- \usepackage{placeins}
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
\newpage
# Section 1
```{r CompTables, echo=FALSE, warning=FALSE, results='asis', out.extra='FloatBarrier'}
comptables1<-matrix(rep(c(100,200,300,400,500),3),nrow=5,ncol=3)
colnames(comptables1)<-c("Conservative","Moderate","Aggressive")
row.names(comptables1)<-c("5th %-tile","25th %-tile","50th %-tile","75th %-tile","95th %-tile")
comptables2<-matrix(0,nrow=6,ncol=3)
comptables2[1,]<-comptables1[1,]
for (i in 2:5){
comptables2[i,]<-comptables1[i,]-comptables1[i-1,]
}
comptables<-list()
comptables[[1]]<-list(comptables1,comptables2)
comptables[[2]]<-list(comptables1,comptables2)
comptables[[3]]<-list(comptables1,comptables2)
comptables[[4]]<-list(comptables1,comptables2)
knitr::kable(comptables[[1]][1],
caption="Table of Forecast Wealth Values: Suggested One Year",
format.args=list(big.mark=",",floating=FALSE))
knitr::kable(comptables[[2]][1],
caption="Table of Forecast Wealth Values: Suggested Three Years",
format.args=list(big.mark=",",floating=FALSE))
knitr::kable(comptables[[3]][1],
caption="Table of Forecast Wealth Values: Suggested Five Years",
format.args=list(big.mark=",",floating=FALSE))
knitr::kable(comptables[[4]][1],
caption="Table of Forecast Wealth Values: Suggested Ten Years",
format.args=list(big.mark=",",floating=FALSE))
```
```{r CompChart, echo=FALSE, warning=FALSE, fig.height=4, fig.show='hold', results='asis'}
horizons <- c(1,3,5,10)
par(mfrow=c(1,2))
minv<-min(unlist(comptables[[1]][1]),unlist(comptables[[2]][1]),
unlist(comptables[[3]][1]),unlist(comptables[[4]][1]))
maxv<-max(unlist(comptables[[1]][1]),unlist(comptables[[2]][1]),
unlist(comptables[[3]][1]),unlist(comptables[[4]][1]))
for (h in 1:length(horizons)){
wealth.pl.comp<-matrix(unlist(comptables[[h]][2],use.names = FALSE),ncol=3,byrow=FALSE)
colnames(wealth.pl.comp)<-c("Cons.","Mod.","Aggr.")
barplot(wealth.pl.comp,col=c("white","red","yellow","green","blue"),border=NA,
main=paste("Forecast A/T Values -",horizons[h],"Years"),
ylim=c(minv/2,maxv+minv/2))
abline(h=250,col="darkgray")
}
par(mfrow=c(1,1))
```
\newpage
#Section 2
Я экспериментировал с плавающей = FALSE опции в функции KABLE и fig.show и результатов параметров (включая результаты = «трюм») в опциях куска. Новая страница перед Разделом 1 также не соответствует порядку. Заметьте, я тоже проверил this seemingly similar question.
Вот изображение выхода. Текст из одного показанного фрагмента не работает, потому что две таблицы находятся над текстовым заголовком «Раздел 1». Диаграмма между таблицами из следующего фрагмента.
Я обычно включаю '\ usepackage {placeins}' в моем заголовке, а затем место '\ FloatBarrier' перед заголовком раздела, чтобы предотвратить плавающие среды от пересечения вне секции я хочу их. – Benjamin
я добавил заголовок' - включает в себя: - \ usepackage {placeins} 'и модифицировал заголовки кусков, чтобы они выглядели следующим образом:' {r, echo = FALSE, warning = FALSE, results = 'asis', out.extra = 'FloatBarrier'} ' за комментарий @Benjamin. У меня все еще такая же проблема. Что мне делать по-другому? – rmacey
Если вы предоставите воспроизводимый пример, будет легче сделать конкретную рекомендацию. – Benjamin