2016-09-18 3 views
0

У меня есть кадр данных, который выглядит следующим образом.Подмножество подмножества подмножества с использованием цикла в R

head(growthMelt) 
     Date Strain Replicate Fluor 
1 2016-08-24 42-2 Fluor.I 14.01 
2 2016-08-24 42-4 Fluor.I 9.60 
3 2016-08-24 42-6 Fluor.I 47.66 
4 2016-08-24 42-8 Fluor.I 28.47 
5 2016-08-24 Control Fluor.I 51.61 
6 2016-08-26 42-2 Fluor.I 75.78 

У меня есть 5 штаммов, каждый из которых имеет три измерения флуоресценции на каждую дату. Мне нужно сделать график для каждого измерения флуоресценции на одно напряжение по сравнению с датой. Итак, в конечном итоге мне нужно получить что-то вроде plot(Fluor~Date). Мне нужно пять графиков, по одному для каждого штамма с линиями для трех измерений фтора (Fluor.I, Fluor.II, Fluor.III) на каждом участке.

Существует много данных, поэтому я решил использовать для циклов подмножество и сюжет. До сих пор я пробовал:

strains<-unique(growthMelt$Strain) 

fluors<-unique(growthMelt$Replicate) 

for(i in strains){ 
    sub.strain<-subset(growthMelt, Strain==i) 
    for (i in fluors){ 
    sub.flours<-subset(sub.strain, Replicate==i) 
    plot(Fluor~Date, sub.flours) 
    } 
} 

Результирующий график отображает только один экземпляр Fluor для одного штамма. Любые предложения были бы весьма признательны.

Кроме того, это мой первый вопрос о переполнении стека, поэтому, пожалуйста, будьте осторожны. :)

+0

Есть на 1 значение «Репликация» в заголовке ваших данных, поэтому, чтобы сделать это воспроизводимым, вам может понадобиться 'dput()' больше данных. –

+0

ggplot (growthMelt, aes (x = Date, y = Fluor)) + geom_point() + geom_smooth (метод = "lm", se = FALSE) + facet_grid (Strain ~ Replicate) –

+0

Btw его не очень сложно использовать два раза тот же индекс [i] в ​​пределах цикла, хотя я думаю, что это правильно в этом –

ответ

1

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

par(mfrow=c(5,3)) 

strains<-unique(growthMelt$Strain) 

fluors<-unique(growthMelt$Replicate) 

for(i in strains){ 
    sub.strain<-subset(growthMelt, Strain==i) 
    for (j in fluors){ 
    sub.flours<-subset(sub.strain, Replicate==j) 
    plot(Fluor~Date, sub.flours) 
    } 
} 

Или вы могли бы сохранить каждый участок в новый документ (например, PDF):

for(i in strains){ 
    sub.strain<-subset(growthMelt, Strain==i) 
    for (j in fluors){ 
    sub.flours<-subset(sub.strain, Replicate==j) 
    pdf(paste("Plot_",i,"x",j,".pdf",sep="")) 
    plot(Fluor~Date, sub.flours) 
    dev.off() 
    } 
} 

Или просто один большой PDF

pdf("Plot.pdf") 
for(i in strains){ 
    sub.strain<-subset(growthMelt, Strain==i) 
    for (j in fluors){ 
    sub.flours<-subset(sub.strain, Replicate==j) 
    plot(Fluor~Date, sub.flours) 
    } 
} 
dev.off() 

Или ggplot вариант:

library(ggplot2) 
p1 <- ggplot(growthMelt, aes(x=Date, y = Fluor)) + 
    geom_point() + 
    geom_smooth(method = "lm", se = FALSE) + 
    facet_grid(Strain ~ Replicate) 

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