首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >knitr:有没有办法让forloop条件包含Sexpr?

knitr:有没有办法让forloop条件包含Sexpr?
EN

Stack Overflow用户
提问于 2013-02-04 13:13:49
回答 1查看 525关注 0票数 2

我正在使用R中的convert包尝试将数据帧转换为报告。问题是输入数据中有很大的可变性。其目的是打印一行文本(从数据帧中提取,然后是图形,也是从数据帧中提取)

下面的代码是相同代码的精简版本。它不能输出一个PDF文件。

代码语言:javascript
复制
\documentclass{report}
\usepackage{forloop}
\newcounter{tmp}

\begin{document}
\newcommand{\Brep}{$\Sexpr{A}$}

\forloop{tmp}{1}{\value{tmp} < \Brep} {\Brep}

\end{document}

在检查日志和删除部分时,我已经将范围缩小到在forloop的条件下无法计算\FBrep部分。

有什么办法可以绕过这个问题吗?另外,在下一步中,我将需要以类似的方式使用in图形,如下所示

代码语言:javascript
复制
\includegraphics{\Brep.PNG}

如果这是RTFM材料,很抱歉。我真的是新来的,我确实看了很多。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-04 13:49:23

您不能让LaTeX调用knitrRknitr所做的是解析文档中的R代码,并对代码进行评估。然后一切都在R端完成,您将得到一个与R无关的静态LaTeX输出文档。所以如果你想写什么,用R代码就行了。

将你的程序直接翻译成R:

代码语言:javascript
复制
\documentclass{report}
\begin{document}

<<results='asis', echo=FALSE>>=
for (tmp in 1:A) {
  cat(tmp)
}
@

<<results='asis', echo=FALSE>>=
for (tmp in 1:A) {
  cat(sprintf('\\includegraphics{%d.PNG}', tmp))
}
@
\end{document}

但它可以简化为:

代码语言:javascript
复制
\documentclass{report}
\begin{document}
\Sexpr{paste(1:A, collapse = '')}
\Sexpr{paste(sprintf('\\includegraphics{%d.PNG}', 1:A), collapse = '')}
\end{document}

我还需要提醒您,这可能不是在文档中插入绘图的理想方法(通常您不需要注意\includegraphics{})。你需要意识到像这样的自动化:

代码语言:javascript
复制
\documentclass{report}
\begin{document}
<<>>=
for (i in 1:5) {
  hist(mtcars[, i])
}
@
\end{document}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14680742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档