我想\Sexpr{}在\ begin {document}命令之后但在\ maketitle命令之前使用LaTeX文档标题中的Knitr/Sweave内联调用().内联R代码将从我在LaTeX中嵌入的R脚本中早期创建的R数据帧中提取一条或两条信息.
我有几个Knitr块创建了一个data.frame,我从中获取了我想要放入Title的信息.我尝试在LaTeX的\ begin {document}调用和\ title代码之间放置这些块,如下所示:
\documentclass
[LaTex Preamble]
\begin{document}
[%% Knitr chunks that initialize an R data-frame]
\title \Sexpr{--a snippet of R code that extracts an element from the data-frame --}
\maketitle
... (rest of the LaTeX document)
Run Code Online (Sandbox Code Playgroud)
我还尝试在\ begin {document}语句之前将Knitr块放在LaTeX代码的序言中.
但是在Knitr中似乎忽略了放在LaTeX中\ maketitle调用之前的代码(初始化除外),因此内联片段包含标题看起来像Latex的错误并且它会停止输出.
我在Knitr文档中找不到有关在LaTeX文档的标题中包含内嵌代码的任何信息.
有任何想法吗?
好的:感谢下面@ ben-bolker提示的解决方案.Ben在输出到RNW文件之前使用R块的格式(在2步Knitr过程中:latex - > rnw - > pdf).但我正在一步编译LaTeX文件,而不是从TeXShop内部(在Mac OSX上)转到RNW文件.我发现我可以让Ben的例子使用RNW分隔符(<< >> =)和一步编译.但我无法混合通常的LaTeX块分隔符(%% begin.rcode和%% end.rcode)和RNW内联语句钩子(\ Sexpr {}).无论我如何摆弄它,后者都无法奏效.最终我发现LaTeX的正确内联钩子是\\ rinline {}.
在Knitr文档中不太清楚这是LaTeX所需的格式,我发现它最终主要归功于Ben的例子.最好,彼得
更新2 ...然后是RTFM(在这种情况下是'备忘单'):http://cran.r-project.org/web/packages/knitr/vignettes/knitr-refcard.pdf
我想迭代我的R markdown文件中的结果集列表.当我生成输出时,我想要包含一些文本,例如带有结果集名称的标题.
我发现一个hacky解决方案是直接在这样的文档中硬编码html输出
## All results
```{r loopResults, echo=FALSE, results='asis'}
results = list(result1 = data.frame(x=rnorm(3), y=rnorm(3)), result2=data.frame(x=rnorm(3), y=rnorm(3)))
for(res in names(results)) {
cat(paste("<h3>Results for: ", res, "</h3>>"))
plot(results[[res]]$x, results[[res]]$y)
}
Run Code Online (Sandbox Code Playgroud)
这似乎不是正确的做事方式,特别是因为我想在时间通过pandoc创建PDF文档,并且必须更改硬编码表达式.(我目前有便利功能,如h3(文本,类型)).
有没有更好的方法呢?
亲爱的R xtable和knitr用户:我几天来一直在努力解决这个问题,我很惊讶没有一个人已经报道过类似的案例.非常感谢您的见解和帮助.
我使用xtable制作两个或更多表.表中的行交替着色.第一张表很好.但从第二个表(或更多)开始,最左边的标题单元格总是变黑.
不幸的是,这是非常可重复的.在第一张漂亮的桌子后,我总是得到完全相同的黑色标题.以下是重现它的代码:
\documentclass{article}
\usepackage{booktabs}
\usepackage{colortbl, xcolor}
\begin{document}
<<echo=TRUE,results='asis'>>=
employee <- c('John Doe','Peter Gynn','Jolie Hope')
salary <- c(21000, 23400, 26800)
mydata <- data.frame(employee, salary)
rws <- seq(1, (nrow(mydata)), by = 2)
col <- rep("\\rowcolor[gray]{0.90}", length(rws))
library(xtable)
print(xtable(mydata, caption="Test"), booktabs = TRUE,
include.rownames = FALSE, caption.placement = "top",
sanitize.colnames.function = identity,
add.to.row = list(pos = as.list(rws), command=col))
print(xtable(mydata, caption="Test"), booktabs = TRUE,
include.rownames = FALSE, caption.placement = "top",
sanitize.colnames.function = identity,
add.to.row = list(pos = as.list(rws), command=col))
@
\end{document}
Run Code Online (Sandbox Code Playgroud)
输出: …
我在我的*.Rmd文件中使用以下代码来生成以下输出:
```{r gb, echo=F, eval=T, results='asis', cache.rebuild=T, fig.cap='bla', out.width='0.7\\linewidth', fig.subcap=c('bla.', 'Using the \\textit{normalizeChIPToInput} function. THis method doesn not require to compute a enrichment ratio.')}
p1 <- file.path(FIGDIR, 'correlK27K9me3.png')
p2 <- file.path(FIGDIR, 'correlK27K9me3.png')
knitr::include_graphics(c(p1,p2))
```
Run Code Online (Sandbox Code Playgroud)
我想垂直堆叠这两个图而不是并排显示它们而没有单独的调用include_graphics(这不适用于子标题)并且不必将它们放入单独的块中.这是否可以在不操纵乳胶代码的情况下实现?
更一般地说,是否有可能以某种方式指定上述方式中包含的绘图的布局,例如:'为我提供给include_graphics函数的4个图像给我一个2x2的网格?
我正在用Rmarkdown中的Bookdown撰写我的论文(我最终会将其导出为PDF格式).提交论文时,我需要在论文的第一页之前加入一些带有手写签名的扫描文档.
Bookdown在组合不同的Rmd文件方面令人惊叹,但我还没有设法在标题页之前包含PDF文档.
我试过这个:
bookdown::pdf_book:
includes:
in_header: preamble.tex
before_body: beforebody.tex
Run Code Online (Sandbox Code Playgroud)
在preamble.tex中:
\usepackage{pdfpages}
Run Code Online (Sandbox Code Playgroud)
在beforebody.tex中:
\includepdf[pages={5}, scale=1]{OfficialFrontpages.pdf}
\newpage
Run Code Online (Sandbox Code Playgroud)
但是,它首先创建Bookdown标题页,并仅在目录之前插入这些页面.有没有办法强制在最终PDF文档的第一页之前包含此文档?
将这些命令作为第一个.Rmd文件的行包含在内也不起作用:

\raggedright
\clearpage
Run Code Online (Sandbox Code Playgroud) 从?reg.finalizerR中的文档:
除其他外,它提供了一种方法来编写代码,以便在R会话结束时运行而无需进行操作
.Last.为了在包中使用,通常最好在命名空间中的对象上设置终结器:然后在会话结束时调用终结器,或者在会话期间完成命名空间后不久调用它.
似乎我可以reg.finalizer()在R会话结束时使用运行某些代码,但它对我不起作用.我在https://github.com/yihui/finalizer-test准备了一个最小的包,它基本上包含以下代码:
e = new.env()
reg.finalizer(e, function(e) {
message('Bye!')
}, onexit = TRUE)
Run Code Online (Sandbox Code Playgroud)
如果我只是在交互式R会话中运行上面的代码并退出会话,我可以看到该消息Bye!,但是如果我安装上面的包(你可以使用devtools::install_github('yihui/finalizer-test')),在R会话中加载它,并退出R会话,我看不到消息.我想知道为什么在这种情况下不执行终结器.
FWIW,当我安装软件包时,我可以看到以下消息Bye!:
$ R CMD INSTALL .
* installing to library ‘/Users/yihui/R’
* installing *source* package ‘finalizer’ ...
** R
** preparing package for lazy loading
No man pages found in package ‘finalizer’
** help
*** installing help indices
Bye!
** building package indices
** testing if installed package can be …Run Code Online (Sandbox Code Playgroud) R大师,
我正在努力为Rmarkdown设计一个信头模板,用于大规模的邮件合并项目.
问题是如果标题可以在YAML中定义?代码可能如下所示:
---
output:
pdf_document:
fig_caption: false
logo: logo.png
institute: UNIVERSITY OF CALIFORNIA
name: Prof. Jones
address: Mathematics Search Committee
Department of Mathematics
University of California
Berkeley, California 12345
email: pj@uc.ac
latex_engine: pdflatex
fontfamily: mathpazo
fontsize: 11pt
# spacing: double
endnote: no
---
Run Code Online (Sandbox Code Playgroud) 我知道Chromium --virtual-time-budget 源代码中的论证文档,但我觉得我不理解它:
// If set the system waits the specified number of virtual milliseconds before
// deeming the page to be ready. For determinism virtual time does not advance
// while there are pending network fetches (i.e no timers will fire). Once all
// network fetches have completed, timers fire and if the system runs out of
// virtual time is fastforwarded so the next timer fires immediately, until the
// specified virtual time budget is exhausted.
const …Run Code Online (Sandbox Code Playgroud) 我在Shiny App中使用rhandsontable,我想知道在这种情况下如何使用Handsontable的getSelected()方法,因为我打算在data.frame上应用更改.谢谢!
我正在使用RStudio和knitr将.Rmd编织为.docx
我想在图标题中包含内联代码,例如块选项中的以下内容:
fig.cap =" nrow(data)数据点图"
但是,knitr不会评估此代码,而只是打印未评估的命令.
有没有办法让knitr来评估图/表格标题中的r代码?
r ×9
knitr ×6
r-markdown ×4
latex ×3
pandoc ×2
alternating ×1
bookdown ×1
chromium ×1
finalizer ×1
handsontable ×1
markdown ×1
pdf ×1
r-package ×1
shiny ×1
xtable ×1