编译后rmarkdown data.table图不匹配

时间:2018-06-27 08:04:12

标签: r data.table r-markdown

我到处都在寻找答案,我不确定这是否是一个错误,但是我还没有发现任何与此类似的远程问题,所以去了。

我(相对)是R语言中的data.table库的新手,但是它能够轻松地将内容应用于选择性查询而不必为所有功能创建函数的能力,使我在第一次使用它的那一刻就被卖掉了。

我使用rmarkdown编译报告,并且一直在j的{​​{1}}部分运行绘图。这可以在Rstudio中顺利运行,编辑器可以按照预期的方式执行我的代码,但是一旦我编译输出,绘图就不再符合我想要的(和看到的)了!

我已经多次清理并重新启动Rsession,所以我知道此问题不是由于我的R环境引起的。甚至更陌生,当我实际上以DT[i, j, by]代码打印数据时,它们在输出和编辑器中都是相同的,因此j确实是搞砸了……

以下是Rmd代码,它说明了我的问题:

plot

这是我在Rstudio中得到的(这是我应该得到的): enter image description here enter image description here

但是,是我编译后得到的:

enter image description here

打印的变量是正确的,所以我不知道这里出了什么问题。我认为它与Rmarkdown编译及其处理图的方式有关,但是我没有太多事情要做。

有什么想法吗?


编辑:

版本信息:

  • --- 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 ] ```
  • R version 3.3.3 (2017-03-06)
  • knitr_1.20

1 个答案:

答案 0 :(得分:0)

您可以通过用paste0包围颜色来强制使用颜色:

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 ]

enter image description here