2014-02-04 3 views
7

У меня есть список из 21 различных фреймов данных, называемых «proc.r1».Создание нескольких графиков из списка фреймов данных

Я пытаюсь сделать 21 график, каждый из которых использует данные из каждого фрейма данных в списке.

То, что я сделал ниже, работает только с первым фреймом данных в списке. Ggplot, который я написал для «plotdf1», - это график, который мне нужно создать из каждого кадра данных. Поэтому мне нужно 21 одинаково выглядящего «plotdf1», за исключением того, что каждый будет отображать данные из разных кадров данных.

#making the first data frame in the "proc.r1" list as a separate data frame 
    df1 <- as.data.frame(proc.r1 [[1]]) 
    #making all the NA values displayed as 0 
    df1[is.na(df1)] <- 0 
    #rounding off the "norm.n" column, which I'll use as a label in the plot, to just 1 decimal point 
    df1 [,42] <- round(df1[,42],1) 
    plotdf1 <- ggplot(df1)+geom_rect(aes(xmin=0,xmax=5,ymin=0,ymax=5))+facet_grid(row~col)+geom_text(aes(x=2.5,y=2.5,label=norm.n,colour="white")) 

Есть ли способ, которым я могу закодировать это, чтобы я мог генерировать 21 график? Я действительно не хочу делать «df1», «df2», df3 »и т. Д. До« df21 », а затем копировать все имена в эти несколько строк функций и выполнять« plotdf1 »,« plotdf2 », plotdf3" , и т.д. и т.п.

Пожалуйста, дайте мне знать, если этот вопрос запутанным

Спасибо заранее

ответ

4

это относительно просто:.!

for(i in 1:length(proc.r1) 
{ 
    df1 = as.data.frame(proc.r1[[i]]) 
    df1[is.na(df1)] <- 0 
    df1[,42] <- round(df1[,42],1) 
    plotdf1 <- ggplot(df1)+geom_rect(aes(xmin=0,xmax=5,ymin=0,ymax=5))+ 
      facet_grid(row~col)+geom_text(aes(x=2.5,y=2.5,label=norm.n,colour="white")) 
    print(plotdf1) 
} 

Использование lapply также возможно, поскольку вы есть список, но я предпочитаю for здесь, потому что вы ничего не возвращаете.

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