Функция чтения Drake не работает для графиков
Я пытаюсь с трудом стрелять почему Drake
участки не отображаются с readd()
- Остальная часть трубопровода, похоже, сработала.
Не уверен, что это вызвано minfi::densityPlot
или какая-то другая причина; мои мысли поздние, так как это не работает для barplot
функция, которая является базой R.
В отчете RMarkdown у меня есть readd(dplot1)
и т.д. в кусках, но на выходе NULL
Это код, который у меня есть в моем R/setup.R
файл:
library(drake)
library(tidyverse)
library(magrittr)
library(minfi)
library(DNAmArray)
library(methylumi)
library(RColorBrewer)
library(minfiData)
pkgconfig::set_config("drake::strings_in_dots" = "literals") # New file API
# Your custom code is a bunch of functions.
make_beta <- function(rgSet){
rgSet_betas = minfi::getBeta(rgSet)
}
make_filter <- function(rgSet){
rgSet_filtered = DNAmArray::probeFiltering(rgSet)
}
Это мое R/plan.R
файл:
# The workflow plan data frame outlines what you are going to do
plan <- drake_plan(
baseDir = system.file("extdata", package = "minfiData"),
targets = read.metharray.sheet(baseDir),
rgSet = read.metharray.exp(targets = targets),
mSetSq = preprocessQuantile(rgSet),
detP = detectionP(rgSet),
dplot1 = densityPlot(rgSet, sampGroups=targets$Sample_Group,main="Raw", legend=FALSE),
dplot2 = densityPlot (getBeta (mSetSq), sampGroups=targets$Sample_Group, main="Normalized", legend=FALSE),
pal = RColorBrewer::brewer.pal (8,"Dark2"),
dplot3 = barplot (colMeans (detP[,1:6]), col=pal[ factor (targets$Sample_Group[1:6])], las=2, cex.names=0.8, ylab="Mean detection p-values"),
report = rmarkdown::render(
knitr_in("report.Rmd"),
output_file = file_out("report.html"),
quiet = TRUE
)
)
После использования make(plan)
похоже, все прошло гладко:
config <- drake_config(plan)
vis_drake_graph(config)
Я могу использовать loadd()
загрузить объекты, необходимые для одного из этих графиков, а затем создать графики, например:
loadd(rgSet)
loadd(targets)
densityPlot(rgSet, sampGroups=targets$Sample_Group,main="Raw", legend=FALSE)
Но readd()
команда не работает?
Выход в .html
для dplot3 выглядит странно...
1 ответ
К счастью, это ожидаемое поведение. drake
цели являются возвращаемыми значениями команд, и поэтому значение dplot3
предполагается, что возвращаемое значение barplot()
, Возвращаемое значение barplot()
на самом деле не сюжет. Раздел "Значение" файла справки (?barplot
) объясняет возвращаемое значение.
A numeric vector (or matrix, when beside = TRUE), say mp, giving the coordinates of all the bar midpoints drawn, useful for adding to the graph.
If beside is true, use colMeans(mp) for the midpoints of each group of bars, see example.
Так, что происходит? Как и в большинстве базовых графических функций, сюжет из barplot()
на самом деле побочный эффект. barplot()
отправляет график на графическое устройство, а затем возвращает что-то еще пользователю.
Вы рассматривали ggplot2
? Возвращаемое значение ggplot()
на самом деле объект сюжета, который является более интуитивным. Если вы хотите придерживаться базовой графики, возможно, вы можете сохранить график в выходной файл.
plan <- drake_plan(
...,
dplot3 = {
pdf(file_out("dplot3.pdf"))
barplot(...)
dev.off()
}
)