rmarkdown data.table графики не совпадают после компиляции - PullRequest
0 голосов
/ 27 июня 2018

Я везде искал ответ, и я не уверен, является ли это ошибкой, но я не нашел каких-либо удаленно подобных проблем для этого, так что здесь.

Я (относительно) новичок в библиотеке data.table в R, но ее способность легко применять материал к выборочным запросам без необходимости создавать функции для всего меня продала в тот момент, когда я впервые ее использовал.

Я компилирую отчеты с помощью rmarkdown, и выполняю графики на j части DT[i, j, by]. В Rstudio это работает гладко, редактор выполняет мой код так, как он должен, но в тот момент, когда я компилирую вывод, графики больше не соответствуют тому, что я хочу (и увидел) больше!

Я очищал и перезапускал Rsession несколько раз, поэтому я знаю, что эта проблема не связана с моей средой 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 (что я и должен): enter image description here enter image description here

Однако это - это то, что я получаю после компиляции:

enter image description here

Печатные переменные верны, поэтому я не знаю, в чем здесь проблема. Я предполагаю, что это связано с компиляцией Rmarkdown и с тем, как он обрабатывает графики, но мне нечем продолжать.

Есть идеи?


Редактировать:

Информация о версии:

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

1 Ответ

0 голосов
/ 27 июня 2018

Вы можете форсировать цвета, окружая цвет с помощью 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

...