2016-09-19 2 views
0

Мне просто интересно, как я могу использовать цикл, чтобы пройти через некоторые модели и нарисовать графики для них?Используйте цикл для рисования графика в R

У меня есть множество моделей смеси по возрастным группам, с каждой возрастной группой я подобрал 2, 3, 4, 5 компонентных моделей. Я назвал их, используя следующий метод:

ag1.mix2 
    ag1.mix3 
    ag1.mix4 
    ag1.mix5 
    ag2.mix2 
    ag2.mix3 
    ag2.mix4 
    ag2.mix5 

и так далее (AG1 = возрастная группа 1; компоненты mix2 = смесь 2).

Теперь я пытаюсь рисовать графики для каждой из этих моделей, я попытался упростить коды, используя что-то вроде:

for(i in 1:11) { 
    emf(paste("Mixture Components by Age Group ", i, ".emf")) 
    par(mfrow = c(2, 2), oma = c(0, 0, 2, 0)) 
    for(j in 2:5) { 
    plot(cat("ag", i, ".mix", j, sep = "", "\n"), which = 2, las = 1, breaks = 100, 
     main2 = paste(j, "components"))  
    } 
    title(main = paste("Age Group", agegp[i]), outer = TRUE) 
    dev.off() 
} 

Однако, это не совсем работа и R жалуется:

Error in plot.window(...) : need finite 'xlim' values 

Если я делаю это так:

plot(ag1.mix2, which = 2, las = 1, breaks = 100, main2 = "2 Comonents") 

Затем он работает отлично. Однако, с 4x11 моделями, чтобы пройти, я надеюсь, что я могу использовать цикл!

Любые предложения были бы весьма полезными.

Кевин

PS - модель смеси была установлена ​​с помощью пакета mixtools.

ответ

0

Вы можете попробовать использовать get

как

for(j in 2:5) { 
data_to_plot=get(paste0("ag", i, ".mix", j)) 
    plot(data_to_plot, which = 2, las = 1, breaks = 100, 
     main2 = paste(j, "components"))  
    } 

небольшой рабочий пример:

data1=1:10 
data2=2:20 

for (i in 1:2){ 
    png(paste0("plot_",i,".png")) 
    data_to_plot=get(paste0("data", i)) 
    plot(data_to_plot) 
    dev.off() 
} 
+0

Благодарности кучки - это сработало! –

Смежные вопросы