Сохранение нескольких ящиков - PullRequest
5 голосов
/ 14 марта 2011

Я сделал цикл для создания нескольких боксплотов.Дело в том, что я хочу сохранить все боксы без перезаписи друг друга.Есть предложения?

Это мой текущий код:

boxplot <- list()
for (x in 1:nrow(checkresults)){
    boxplots <- boxplot(PIM[,x], MYC [,x], OBX[,x], WDR[,x], EV[,x], 
                        main=colnames(PIM)[x], 
                        xlab="PIM, MYC, OBX, WDR, EV")
}

Ответы [ 3 ]

6 голосов
/ 14 марта 2011

Вы хотите сохранить их в некоторых файлах или сохранить их, чтобы иметь возможность просматривать их в разных окнах?

Если это первый случай, вы можете использовать png, pdf или любой другой вызов функции внутри вашего for цикла:

R> for (i in 1:5) { 
R>    png(file=paste("plot",i,".png",sep=""))
R>    plot(rnorm(10))
R>    dev.off() 
R> }

Если вы хотите отобразить их в отдельных окнах, просто используйте dev.new:

R> for (i in 1:5) { 
R>    dev.new()
R>    plot(rnorm(10)); 
R> }
6 голосов
/ 14 марта 2011

Просто чтобы добавить к ответу @ juba, если вы хотите сохранить графики в многостраничный pdf-файл, вам не нужно использовать команду paste, предложенную @juba.Этот

pdf("myboxplots.pdf")
for (x in seq_along(boxplots)){
    boxplot(PIM[,x], MYC [,x], OBX[,x], WDR[,x],EV[,x],
                     main = colnames(PIM)[x], 
                     xlab = "PIM, MYC, OBX, WDR, EV")
}
dev.off() 

создает один многостраничный документ в формате PDF, где каждая страница представляет собой блокпост.Если вы хотите сохранить коробочные графики в отдельных документах pdf, используйте команду file=paste.

2 голосов
/ 14 марта 2011

Во-первых, создайте список нужной длины - это просто упростит задачу и рекомендуется распределять хранилище перед заполнением объектов с помощью цикла:

boxplots <- vector(mode = "list", length = nrow(checkresults))

Затем мы можем циклически перебирать данные, которые выхотите, присваивая каждому компоненту списка boxplots по мере использования, используя запись [[x]]:

for (x in seq_along(boxplots)){
    boxplots[[x]] <- boxplot(PIM[,x], MYC [,x], OBX[,x], WDR[,x],EV[,x],
                             main = colnames(PIM)[x], 
                             xlab = "PIM, MYC, OBX, WDR, EV")
}

Раньше ваш код перезаписывал предыдущую информацию о блокпосте во время последующих итераций.

...