小编Yih*_*Xie的帖子

Can Sweave会自动生成许多pdf吗?

我分析来自许多城市的测量数据(数百个),并且需要为每个城市创建单独的报告(采用Adobe pdf格式).

我的过程是这样的:

  1. 第一个RStudio准备要显示的数据,保存在X.Rda中.
  2. 在X.Rnw(RStudio)中,我读了X.Rda,选择一个城市,并生成表格和图表.
  3. 在RStudio我按"编译PDF",生成城市报告X.pdf.
  4. 我转到第2步,选择另一个城市,依此类推.

这非常繁琐,看起来非常适合每个城市的循环,但它怎么能完成呢?

谢谢r-contributors!

/克里斯

r sweave knitr

20
推荐指数
1
解决办法
2929
查看次数

如何将.Rmd文件转换为Rstudio的.Rnw文件?

我非常喜欢knitr在Rstudio中使用它并一直用它来编写降价演示和数据分析.我想在纸上使用相同的代码和结果,并希望将Rmd文件中的代码块转换为Rnw文件```{r}的块<< >>= @.

这允许使用为主文件编写的相同文档和代码.

有没有一种方法可以在markdown和Rnw文件的代码块之间进行转换?

或者整个文件本身除了代码块的语法差异外,它们在标记中非常相似(用pandoc将文本转换为latex很容易)

r rstudio knitr

19
推荐指数
1
解决办法
4842
查看次数

如何判断情节是否完整

更新:我问保罗马雷尔(以下简称"最终boss"),他告诉我打开一个新页面在做决定src/library/graphics/src/graphics.cGNewPlot:

pGEDevDesc GNewPlot(Rboolean recording)
Run Code Online (Sandbox Code Playgroud)

它有效地查看par(mfg)par(new)决定是否打开新页面.我如何在附加软件包中进行测试?

使用纯R代码或某些C代码的解决方案是可以接受的.


knitr使用evaluate包来评估R代码块,并捕获结果,包括绘图.简单地说,evaluate调用recordPlot()记录当前情节的快照,每个代码的表达进行了评估之后,也像绘制挂钩时,before.plot.newbefore.grid.newpage被称为(通常这种情况发生了新的情节绘制之前).对于那些"Luke's",如果不够清楚,请使用来源.

在我们制作快照之后,我们需要决定是否保留它,因为在我们评估一个新的表达式后,快照可能不会被更改,这与绘图无关.现在,这里是我的问题:当一个情节中包含的子图(例如pairs(),coplot()par(mfrow = c(2, 3))在基础R图形),我们不应该保持不完整的快照.在下面的示例中,应丢弃前三个图:

par(mfrow = c(2, 2))
plot(rnorm(10))
plot(rnorm(10))
plot(rnorm(10))
plot(rnorm(10))
Run Code Online (Sandbox Code Playgroud)

为了实现这一目标,我们比较par("mfg")[1:2]par("mfg")[3:4](你可以在源代码中看到的),而这个效果很好在某些情况下,但不是全部,例如,问题#25:

layout(matrix(c(1,3,2,3), 2))
plot(rnorm(10))
plot(rnorm(10))
plot(rnorm(10))
Run Code Online (Sandbox Code Playgroud)

现在我怎么知道第4行之前情节没有完成?这个mfg伎俩不再适用.

我一直在寻找这个问题的答案很长一段时间,如果有人能给我一个暗示,我会真的很感激; 进一步的细节在上面的两个链接,我可以澄清是否有任何不清楚.我相信必须存在一个解决方案,因为所有R设备都知道何时开始新的绘图屏幕或文件,而不完整的绘图不会触发新的绘图屏幕或文件.

graphics r knitr

18
推荐指数
1
解决办法
1319
查看次数

使用knitr将降价文档的部分插入另一个降价文档中

我知道这可以用php和其他语言来完成,但是想知道是否可以使用knitr完成以下操作:

假设我有一个带有两个标题1部分的Rmarkdown(.rmd)文档:

# This is the first heading for the first document
Lorem ipsum dolor sit amet

# This is the second heading for the first document
plot(object)
Run Code Online (Sandbox Code Playgroud)
  1. 问题1:如果打开另一个.rmd文档,我该如何创建一个链接,以便在解析时,该文档将显示其内容以及第一个文档中的整个内容.例如:

    # This is the first heading for the second document
    Lorem ipsum dolor sit amet
    
    [command goes here to insert the first document]
    
    Run Code Online (Sandbox Code Playgroud)

    结果将是:

    # This is the first heading for the second document
    Lorem ipsum dolor sit amet
    
    # This is the first heading for the first document
    Lorem ipsum …
    Run Code Online (Sandbox Code Playgroud)

markdown r knitr r-markdown

17
推荐指数
1
解决办法
4079
查看次数

更改R降价文档的最大宽度

当我创建R Markdown文件并编织HTML时,会出现以下情况:

<style type="text/css">
.main-container {
  max-width: 940px;
  margin-left: auto;
  margin-right: auto;
}
Run Code Online (Sandbox Code Playgroud)

我想更改max-width属性.我该怎么办?

谢谢.

css r knitr r-markdown

16
推荐指数
2
解决办法
7950
查看次数

如何使用knitr从块中插入普通图片(jpeg/png)

我想使用代码块在文本的开头插入图片,而不是降价.我正在使用Tufte讲义模板output: rmarkdown::tufte_handout,当我在YAML标题后直接插入它但在TOC之前插入如下:

\centering
![width='100%'](./cropped-banner_efpt.jpg)
\raggedright
\tableofcontents
\clearpage
Run Code Online (Sandbox Code Playgroud)

然后图像跨越主体.我知道有块可以选择让块跨越整个页面放置fig.fullwidth = TRUE在块头中,但我有点困惑,因为我没有从数据生成任何图形,我不知道如何简单的地方来自块内的图像.

另一个问题是,当我在YAML头中设置toc:true时,图像只会插入的toc 之后出现 - 这就是我使用latex命令插入toc的原因.

谢谢你的建议.

latex r image knitr r-markdown

16
推荐指数
1
解决办法
2万
查看次数

如何捕获系统的输出()

这个问题的动机是Rmarkdown没有将系统命令的结果输出到html文件.由于某种原因,system()R(或system2())中的输出无法被sink()或捕获capture.output(),因此目前knitr无法记录输出.例如,在R控制台中:

> system('ls')
DESCRIPTION
NAMESPACE
R
README.md
inst
man
Run Code Online (Sandbox Code Playgroud)

但在knitr文档中,您将看不到输出,因为capture.output(system('ls'))character(0),即输出无法捕获.当然,我可以cat(system('ls', intern = TRUE), sep = '\n')按照我在答案中提到的那样做,但这有点尴尬.我想知道它是否是一种system()不使用intern = TRUE和捕获输出的方法cat().


更新:请参阅https://github.com/yihui/knitr/issues/1203,了解我为解决问题而提供的黑客攻击.

r stdout knitr

16
推荐指数
2
解决办法
2216
查看次数

如何删除R Markdown中图像上方和下方的空白区域?

我想主要将.Rmd文件导出为latex pdf.

这是我目前正在使用的代码

```{r ,fig.cap="caption",fig.env='figure', fig.width=10, fig.height=10,echo=FALSE, results='asis', warning=FALSE, strip.white=TRUE}
library(png)
library(grid)
img <- readPNG("filepath/overview.png")
grid.raster(img)
```
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我已经在使用strip.white=TRUE&fig.env='figure'但它们似乎不起作用..PNG文件在图像上方或下方没有任何(白色)间距.

我知道我可以直接使用乳胶并实现我想要的,但我希望能够在Word中重现这一点,如果需要的话.同样在Word中,图像上方和下方有半页空白空间.

任何帮助将不胜感激.谢谢

latex r rstudio knitr r-markdown

15
推荐指数
1
解决办法
5213
查看次数

在RMarkdown中将CSS类添加到单个代码块中

是否可以将CSS类添加到某个代码块?

假设以下文件:

---
title: "Untitled"
output: html_document
---


```{r cars}
summary(cars)
```
Run Code Online (Sandbox Code Playgroud)

我想给那些标记为'cars'的块一个CSS类,例如.myClass.有没有可能像

```{r cars} {.myClass}
summary(cars)
```
Run Code Online (Sandbox Code Playgroud)

或者?我知道黑客喜欢将整个块包裹在另一个块中<div>.我对一个直接的解决方案感兴趣.

css r knitr r-markdown

15
推荐指数
1
解决办法
3879
查看次数

判断=是否在R代码中赋值的可靠方法?

我是一个顽固的使用者而=不是一直使用<-,显然很多R程序员都会对此不以为然.我写的formatR包可以替换=<-基于parser包.正如你们中的一些人可能知道的那样,parser几天前在CRAN上成了孤儿.虽然现在又回来了,但这让我对依赖它犹豫不决.我不知道是否有另一种方式来安全地更换=<-,因为不是所有=的意思分配,例如fun(a = 1).正则表达式是不太可靠(见第18行中的mask.inline()函数formatR),但我肯定会欣赏它,如果你能提高矿井.也许这个codetools包可以帮忙吗?

一些测试用例:

# should replace
a = matrix(1, 1)
a = matrix(
  1, 1)

(a = 1)
a =
  1

function() {
  a = 1
}

# should not replace
c(
  a = 1
  )

c(
  a = c(
  1, 2))
Run Code Online (Sandbox Code Playgroud)

r

14
推荐指数
1
解决办法
421
查看次数

标签 统计

r ×10

knitr ×9

r-markdown ×5

css ×2

latex ×2

rstudio ×2

graphics ×1

image ×1

markdown ×1

stdout ×1

sweave ×1