在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按钮的行为,要么他们解释"基本上"发生了什么,而没有提到可能的陷阱.其他人看起来像是非常相似的问题,但结果却是一个(非常)特殊情况.一些例子:
使用下面的代码我得到了我想要的数据,但由于某种原因我无法弄清楚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) 在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) 我在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}
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) 我正在使用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) 我在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
我有一个关于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()和外部文件中读取,所以不应该缓存这个块.
有没有办法在未缓存的块更改时使缓存无效?
在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文件上的迭代打印?
knitr默认情况下,我想用列之间的垂直线生成表格。
我知道我可以传递align参数来打印xtable. 但这是重复的,align对于不同列数的表, 的值不相同。
如何将其设置为默认行为而不是为每个表执行此操作?