Как предотвратить создание Rplots.pdf?

Я работаю с некоторым R-кодом, который генерирует несколько изображений в виде png файлов; однако, файл Rplots.pdf продолжает генерироваться в рабочем каталоге, есть ли способ предотвратить это?

library(Cairo)
CairoPNG(file = "graphs.png")
nf <- layout(matrix(c(1:8), 2, 4, byrow=T), c(1, 1), c(1, 1, 1, 1), TRUE)
for (k in 1:num.k) {
    plotMatrix(connect.matrix.ordered[k,,], log = F, main = paste("k=", k.vector[k]), sub = paste("Cophenetic coef.=", rho[k]), ylab = "samples", xlab ="samples")
}
y.range <- c(1 - 2*(1 - min(rho)), 1)
plot(k.vector, rho, main ="Cophenetic Coefficient", xlim=c(k.init, k.final), ylim=y.range, xlab = "k", ylab="Cophenetic correlation", type = "n")
lines(k.vector, rho, type = "l", col = "black")
points(k.vector, rho, pch=22, type = "p", cex = 1.25, bg = "black", col = "black")
dev.off()

Ответ 1

Интересно, есть ли у вас другая команда, которая открывает устройство до или после фрагмента кода, который вы нам дали. Когда все закончится, запустите dev.cur(), чтобы узнать, осталось ли устройство открытым. Если нет, он должен вернуть нулевое устройство.

Ниже приведены способы воссоздания получения Rplots.pdf или Rplot001.png; команды layout и par открывают устройство, если оно не открыто, и поскольку имя файла не указано, оно использует имя файла по умолчанию.

options(device="pdf")
layout(1:4)
dev.off()

options(device="png")
par()
dev.off()

Возможно, увидев, что это произойдет, даст вам представление о том, что происходит с вашим кодом.

Ответ 2

Я знаю, что это очень старый пост, и, конечно, ОП решил это. Но я столкнулся с подобной ситуацией, работая с заговорщиком. Преобразование вывода ggplot в графический вывод сгенерировало аналогичную ошибку из-за невозможности открыть файл "Rplots.pdf".

Я решил это, просто включив:

pdf(NULL)

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

Ответ 3

Вот исходный код для CairoPNG:

function (filename = "Rplot%03d.png", width = 480, height = 480, 
    pointsize = 12, bg = "white", res = NA, ...) 
{
    Cairo(width, height, type = "png", file = filename, pointsize = pointsize, 
        bg = bg, ...)
}

Это говорит о том, что CairoPNG принимает filename=... в качестве параметра и передает это значение в Cairo как параметр file.

Я вижу, как это может привести к путанице, но дело в том, что ваш вызов CairoPNG должен быть:

CairoPNG(filename="graphs.png")

Посмотрите, работает ли это...

Ответ 4

У меня была аналогичная проблема недавно после обновления до R-3.0.3 (да, мы немного отстаем!). Оказывается, теперь палитра ( "по умолчанию" ) открывает устройство, хотя оно не использовалось.