小编CL.*_*CL.的帖子

差异:RStudio中的"编译PDF"按钮与knit()和knit2pdf()

TL; DR

在RStudio 中使用knit()/ knit2pdf()代替"编译PDF" 1按钮有什么(可能不需要的)副作用?

动机

大多数用户knitr似乎都在RStudio中编写文档,并使用"编译PDF"/"编织HTML"按钮编译文档.这大部分时间都可以顺利运行,但每隔一段时间就有一些使用编译按钮无法实现的特殊要求.在这些情况下,解决方案通常是直接调用knit()/ knit2pdf()/ rmarkdown::render()(或类似函数).

一些例子:

使用knit2pdf()而不是"编译PDF"按钮通常提供这种问题的简单解决方案.然而,这是有代价的:"编译PDF" 在一个单独的过程和环境中处理文档有根本区别,而knit2pdf()朋友则不然.

这具有影响,问题在于并非所有这些影响都是显而易见的.knit()使用全局环境中的对象的事实为例(而"编译PDF"没有)作为示例.在上述第二个例子的情况下,这可能是显而易见的,并且是期望的行为,但是当用于克服例如示例1和3中的问题时,这是意想不到的结果knit().

此外,还有更微妙的差异:

问题及其目标

每当我读/写使用的建议knit2pdf()而不是"编译PDF"时,我认为"正确,但用户应该理解后果......".

因此,这里的问题是:

在RStudio 中使用knit()/ knit2pdf()代替"编译PDF"按钮有什么(可能不需要的)副作用?

如果对这个问题有一个全面的(社区维基?)答案,可以将其与未来的建议联系起来knit2pdf().

相关问题

这个问题有很多相关的问题.然而,他们要么只提出代码(或多或少)重现RStudio按钮的行为,要么他们解释"基本上"发生了什么,而没有提到可能的陷阱.其他人看起来像是非常相似的问题,但结果却是一个(非常)特殊情况.一些例子:

r rstudio knitr

55
推荐指数
1
解决办法
2822
查看次数

knitr文档中的install.packages失败:"试图在不设置镜像的情况下使用CRAN"

使用下面的代码我得到了我想要的数据,但由于某种原因我无法弄清楚knitr是不是让我编译PDF文档,如下所示:

我的代码:

install.packages("weatherData")
library(weatherData)
istanbul <- getWeatherForDate("Istanbul",
                              start_date = Sys.Date() - 41, 
                              end_date = Sys.Date())
Run Code Online (Sandbox Code Playgroud)

没有问题,但我得到以下消息尝试编译PDF:

Quitting from lines 3-31 (ist_weather.spin.Rmd) 
Error in contrib.url(repos, type) : 
  trying to use CRAN without setting a mirror
Calls: <Anonymous> ... eval -> eval -> install.packages -> grep -> contrib.url
Execution halted
Run Code Online (Sandbox Code Playgroud)

r knitr

39
推荐指数
2
解决办法
5万
查看次数

摆脱kable中的\ addlinespace

在knitr/Sweave报告中,使用该选项的kable功能会添加每五行:knitrbooktabs=TRUE\addlinespace

P1 & A & 10 & 11.016181 & 110.16181 & 44.95101 & 269.9745\\
P1 & B & 10 & 8.592386 & 85.92386 & 35.06083 & 210.5743\\
P1 & A & 100 & 120.610305 & 120.61031 & 58.61274 & 248.1857\\
P1 & B & 100 & 94.990728 & 94.99073 & 46.16245 & 195.4671\\
P2 & A & 1000 & 698.097191 & 69.80972 & 37.34843 & 130.4846\\
\addlinespace
P2 & B & 1000 & 837.649249 & …
Run Code Online (Sandbox Code Playgroud)

latex r sweave knitr

23
推荐指数
1
解决办法
3254
查看次数

在RStudio中执行"编织HTML"时出错"无法打开连接"

我在RStudio中尝试"编织HTML"时遇到以下错误.

  |................................                                 |  50%
  ordinary text without R code

  |.................................................................| 100%


processing file: Preview-b0c112a265.Rmd
label: unnamed-chunk-1

Quitting from lines 16-26 (Preview-b0c112a265.Rmd) 
Error in file(file, "rt") : cannot open the connection
Calls: <Anonymous> ... withVisible -> eval -> eval -> read.csv -> read.table -> file
Execution halted
Run Code Online (Sandbox Code Playgroud)

我在64位win8机器上使用RStudio.

r rstudio knitr

17
推荐指数
3
解决办法
3万
查看次数

使用循环在rmarkdown中生成文本部分

我需要生成一个由几个部分组成的报告,所有部分看起来都很相似,只有一些数据差异.部分的数量也取决于数据.我最终想拥有的是这样的:

```{r}
  section_names = c("A","B","C")
  section_data = c(13,14,16)
```

# some looping mechanism here with variable i

This is section `r section_names[i]`

This section's data is `r section_data[i]`

#more things go here for the section

#end of loop should go here
Run Code Online (Sandbox Code Playgroud)

结果应该是一个单独的html /文档,所有部分一个接一个.

你能指点我用循环生成这样一个Rmd文件的方法吗?

理想情况下,我希望看到像PHP中的东西:

<$php for(i=0;i<10;i++) { ?>
   ## some html template + code chunks here
<$php } ?>
Run Code Online (Sandbox Code Playgroud)

r knitr r-markdown

13
推荐指数
1
解决办法
6428
查看次数

减少knitr块中命令和输出之间的空间

我正在使用knitr,LaTeX并且代码块和输出的开头所回应的命令之间似乎有很多空格:

在此输入图像描述

这个的LaTeX代码如下:

  \begin{knitrout}\scriptsize
  \definecolor{shadecolor}{rgb}{1, 1, 1}\color{fgcolor}\begin{kframe}
  \begin{alltt}
  \hlstd{> }\hlstd{lda_test_pred} \hlkwb{<-} \hlkwd{predict}\hlstd{(lda_fit,} \hlkwc{newdata} \hlstd{= seg_test)}
  \hlstd{> }\hlkwd{library}\hlstd{(pROC)}
  \hlstd{> }
  \hlstd{> }\hlstd{lda_roc} \hlkwb{<-} \hlkwd{roc}\hlstd{(}\hlkwc{response} \hlstd{= seg_test}\hlopt{$}\hlstd{Class,}
  \hlstd{+ }               \hlkwc{predictor} \hlstd{= lda_test_pred}\hlopt{$}\hlstd{posterior[,} \hlstr{"PS"}\hlstd{],}
  \hlstd{+ }               \hlcom{## we need to tell the function that the _first_ level}
  \hlstd{+ }               \hlcom{## is our event of interest}
  \hlstd{+ }               \hlkwc{levels} \hlstd{=} \hlkwd{rev}\hlstd{(}\hlkwd{levels}\hlstd{(seg_test}\hlopt{$}\hlstd{Class)))}
  \hlstd{> }\hlstd{lda_roc}
  \end{alltt}
  \begin{verbatim}

  Call:
  roc.default(response = seg_test$Class, predictor = lda_test_pred$posterior[,     "PS"], levels = rev(levels(seg_test$Class)))

  Data: lda_test_pred$posterior[, "PS"] in 346 …
Run Code Online (Sandbox Code Playgroud)

latex r knitr

9
推荐指数
1
解决办法
1008
查看次数

尊重knitr中的全局选项

我在R Markdown文档中设置全局选项时遇到问题.一个简单的例子如下.在这种情况下,我试图设置global.par = TRUE.期望par()我在一个卡盘中制作的任何规格都被带入后续的块中.但是,这种情况并没有发生.

```{r package_options, include=FALSE}
knitr::opts_knit$set(global.par = TRUE)
```

```{r}
lambda <- 0.2; n <- 1000
exp <- rexp(n, lambda)
par(cex = 0.7)
hist(exp)
```

```{r}
lambda <- 0.02; n <- 1000
exp <- rexp(n, lambda)
hist(exp)
```
Run Code Online (Sandbox Code Playgroud)

规格:Max OS 10.11,R版本3.2.0(2015-04-16),RStudio 0.98.1062,knitr 1.12.3

r rstudio knitr r-markdown

7
推荐指数
1
解决办法
604
查看次数

当未缓存的块更改时,使块的缓存无效

我有一个关于knitr chunk选项"dependson"的问题.据我所知,手册此选项应该用于指定缓存块所依赖的其他缓存块.但有没有办法在未缓存的块更改时使块的缓存无效?

这是一个最小的例子:

文件knitrtest.Rnw:

\documentclass{article}
\begin{document}

<<>>=
library(knitr)

read_chunk("chunks.R")
@

<<not_cached>>=
@

<<cached, cache=TRUE, dependson="not_cached">>=
@

\end{document}
Run Code Online (Sandbox Code Playgroud)

文件块.R:

## @knitr not_cached
var <- 42

## @knitr cached
var
Run Code Online (Sandbox Code Playgroud)

当我更改var时,块"缓存"的输出仍为42,因为dependson选项不适用.在我的例子中,我也可以通过缓存第一个块来解决问题.但是,我不能这样做,因为在我使用的第一个块library()和外部文件中读取,所以不应该缓存这个块.

有没有办法在未缓存的块更改时使缓存无效?

r knitr

6
推荐指数
1
解决办法
303
查看次数

在knit html输出上删除carett :: train()的迭代

在Rstudio中使用以下代码与Knit HTML

---
title: "test"
output: html_document
---

```{r pressure, echo=FALSE}
library(caret)
tc <- trainControl(method="boot",number=25)
train = train(Species~.,data=iris,method="nnet",trControl=tc)
confusionMatrix(train)
```
Run Code Online (Sandbox Code Playgroud)

如何避免train我的html文件上的迭代打印?

r knitr r-caret

6
推荐指数
1
解决办法
1969
查看次数

如何让xtable在knitr文档中默认绘制垂直线

knitr默认情况下,我想用列之间的垂直线生成表格。

我知道我可以传递align参数来打印xtable. 但这是重复的,align对于不同列数的表, 的值不相同。

如何将其设置为默认行为而不是为每个表执行此操作?

r xtable knitr

5
推荐指数
1
解决办法
1399
查看次数

标签 统计

knitr ×10

r ×10

rstudio ×3

latex ×2

r-markdown ×2

r-caret ×1

sweave ×1

xtable ×1