Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
rmarkdown data.table图不';编译后不匹配_R_Data.table_R Markdown - Fatal编程技术网

rmarkdown data.table图不';编译后不匹配

rmarkdown data.table图不';编译后不匹配,r,data.table,r-markdown,R,Data.table,R Markdown,我已经到处寻找答案,我不确定这是否是一个bug,但我还没有发现任何类似的问题,所以我来看看 我(相对而言)不熟悉R中的data.table库,但它能够轻松地将内容应用于选择性查询,而不必为所有内容创建函数,这让我在第一次使用它时就卖掉了它 我使用rmarkdown编译报告,并在DT[I,j,by]的j部分运行绘图。这在Rstudio中工作得很顺利,编辑器按照预期的方式执行我的代码,但在我编译输出的那一刻,绘图就不再符合我想要的(和看到的)了 我已经多次清理并重新启动我的会话,所以我知道这个问题不

我已经到处寻找答案,我不确定这是否是一个bug,但我还没有发现任何类似的问题,所以我来看看

我(相对而言)不熟悉R中的
data.table
库,但它能够轻松地将内容应用于选择性查询,而不必为所有内容创建函数,这让我在第一次使用它时就卖掉了它

我使用rmarkdown编译报告,并在
DT[I,j,by]
j
部分运行绘图。这在Rstudio中工作得很顺利,编辑器按照预期的方式执行我的代码,但在我编译输出的那一刻,绘图就不再符合我想要的(和看到的)了

我已经多次清理并重新启动我的会话,所以我知道这个问题不是由于我的R环境造成的。更奇怪的是,当我在
j
代码中实际打印数据时,它们在输出和编辑器中都是相同的,所以
plot
确实是把这搞砸了

下面是说明我的问题的Rmd代码:

---
title: "data.table plot issue"
author: "Anyone"
date: "27 juin 2018"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## Building data

```{r}
library(data.table)

tab = data.table(varA = rep(1:4, each=5),
                 varB = rep(1:5, 4),
                 varC = rep(LETTERS[1:4], each=5),
                 varD = rep(c("red", "blue", "green", "hotpink"), each=5))
tab
```

```{r results="hold"}
layout(matrix(1:4, nrow = 2, byrow = T))
a = tab[,{

  print(varA)
  print(varB)
  print(varC)
  print(varD)

  plot(varB, varA, col=varD, ylim=c(0,5), pch=16, main=varC)

  }, by=varC ]
```
这是我在Rstudio中得到的(这是我应该得到的):

然而,这是我编译后得到的:

打印的变量是正确的,所以我不知道这里有什么问题。我认为这与Rmarkdown编译和它处理绘图的方式有关,但我没有太多的东西要讲

有什么想法吗


编辑:

版本信息:

  • R版本3.3.3(2017-03-06)
  • knitr_1.20
  • rmarkdown_1.9

您可以通过使用
浆糊0围绕颜色来强制颜色:

layout(matrix(1:4, nrow = 2, byrow = T))
a = tab[,{

  print(varA)
  print(varB)
  print(varC)
  print(varD)
  plot(varB, varA, col=paste0(varD), ylim=c(0,5), pch=16, main=varC)
  }, by=varC ]

我可以重现这个问题,我的软件包版本是:
rmarkdown\u 1.9
knitr\u 1.20
数据。表1.11.0
。我正在运行:
R版本3.5.0(2018-04-23)平台:x86_64-w64-mingw32/x64(64位)运行在:Windows>=8 x64(build 9200)
下,可能与@Henrik有关,但奇怪的是,在这里我们得到了相反的效果(Rstudio输出很好,而编译的输出不好)是的,在这种情况下可以做到。不幸的是,绘图的数据列因数据而异。在本例中,是颜色和标题,但在我的一些报告中,打印的实际点受到影响(它为所有打印打印相同的y值,并且正确指定了颜色)。我希望我不必为我所有的情节做这样的修正。谢谢你的意见:)啊,但原则是一样的:力量评估。例如,
plot(varB,varA+0,…)
分配变量不会导致计算吗?我试着做一些类似于
A=varA
的事情,然后在测试期间
plot(A,B,…)
复制(varA)
将复制必须在所有plot@RomainB上进行此类修复的值。我想这可能在一般情况下有效(我没有使用您的示例进行测试):