2017-11-01 13 views
0

とストレージ・オブジェクトを必要とする:Rネストされたループggplot、私はネストされたループを記述したい複数の次元

  • 複数ggplots私は次のコードを使用
  • 実行回帰

を生成します。

#create alternative data set 
mtcars1 <- filter(mtcars, disp >= 100) 

#create data, x variable, and y variable lists 
data_list <- c('mtcars', 'mtcars_1') 
x_list <- c('mpg', 'cyl', 'disp') 
y_list <- c('hp', 'drat', 'wt') 

#create empty lists for plots and regressions generated by loop 
plots <- list() 
regressions <- list() 

#loop 
for (i in length(data_list)){ 
    for (j in 1:length(x_list)) { 
    for (k in 1:length(y_list)) { 
     plots[[i, j, k]] <- ggplot(data_list[i], aes_string(x = x_list[j], y = y_list[k])) + 
     geom_point(size = 2) + 
     xlab(x_list[j]) + 
     ylab(y_list[k]) 

     regressions[[i, j, k]] <- lm(y_list[k] ~ x_list[j], data = data_list[i]) 

    } 
    } 
} 

2つの問題:

  1. ggplotデータ入力に相当する「aes_string」はありますか?

  2. 多次元に存在し、多くのタイプのオブジェクトを保持できるオブジェクトが必要です。リストはあらゆる種類のオブジェクトを保持できますが、1次元です。配列は多くの次元を持つことができますが、単一の値しか保持できません。

恐らく私は複数のリストを生成できますか?

答えて

0

dash2の答えが似ていますが、ネストすることでリストに次元性を追加することができます。以下は、2次元のリスト、すなわち2つのリストのリストである。

library(ggplot2) 

plot1<-ggplot(mtcars,aes(x=mpg,y=cyl))+geom_point() 
lm1<-lm(mpg~as.factor(cyl),data=mtcars) 
plot2<-ggplot(mtcars,aes(x=mpg,y=disp))+geom_point() 
lm2<-lm(mpg~as.factor(disp),data=mtcars) 

myList<-list("plots"=list("plot1"=plot1,"plot2"=plot2),"models"=list("lm1"=lm1,"lm2"=lm2)) 

リスト内にリストをネストすることで、必要な次元数を増やすことができます。

2

実際には、リストを適切に設定しておくと、マトリックス内にリストを置くことができます。

plots <- array(list(), dim = c(2, 2, 2)) # must be initialized with list type 
ggp <- ggplot(mtcars, aes(mpg, gear)) + geom_point() 
plots[[1, 1, 1]] <- ggp # double brackets are important 
plots[[1, 1, 1]] 
関連する問題