Knitr输出在Rmd和Rnw之间不同:data.table输出示例

时间:2016-11-30 20:35:59

标签: r r-markdown

修订标题以澄清焦点。

我们注意到R markdown和data.table以令人惊讶的方式相互作用的异常现象。编织LaTeX时也不会发生同样的情况。在R会话中没有返回的命令确实导致在编织的降价输出内返回。我将问题追溯到如下命令,这些命令不会在R中生成输出,

````{r}
poolballs[ , weight2:=2 * weight]
```

但在Rmarkdown内部,输出包括池球DT的完整打印。如果我们在LaTeX中编织一个相同的块,也不会发生同样的情况。

这产生了一些有趣的HTML输出,因为我写了这样的块,打算只显示前5行

```{r}
poolballs[ , weight2:=2 * weight]
head(poolballs)
```

Markdown将其解析为两个块的等价物,

> poolballs[ , weight2:=2 * weight]
> poolballs

> head(poolballs)

这里是要展示的降价文件

---
title: "Data Table Guide"
author:
 - name: Paul Johnson
   affiliation: Center for Research Methods and Data Analysis, University of Kansas
   email: pauljohn@ku.edu

date: "`r format(Sys.time(), '%Y %B %d')`" 
output:
   html_document: 
   theme: united 
   highlight: haddock 
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo=TRUE, comment=NA)
options(width = 70)
```

```{r make_pb_dt}
set.seed(234234)
library(data.table)
poolballs <- data.table(
    number = 1:15,
    weight = rnorm(15, 45.7, 0.8),
    diameter = c(3, 2.9, 3.1) #shows recyling
) 
poolballs
```

I want the following to show only head in line 2
```{r}
poolballs[ , weight2:=2 * weight]
head(poolballs)
```

比较HTML输出:

http://pj.freefaculty.org/scraps/mre-dt.html

对不起,如果这是降价的已知功能。我通过隐藏块来编码这种皱纹,但似乎有点不方便。今天我很好奇地问你这个问题。我在LaTeX文件中编写了相同的块,并且没有发生有趣的DT输出问题。我将来自LaTeX的PDF链接到http:/pj.freefaculty.org/scraps/mre-dt-3.pdf

1 个答案:

答案 0 :(得分:0)

在你的最后一个块中,knitr看到你有两个试图打印的对象,你得到两个输出。这不是一项功能,已在previous question中解决。

如果您只想打印该块中第一个对象的头部,则代码应为head(poolballs[, weight2:=2 * weight])