Reputation: 11
first of all thanks to this forum because I've finded a lot of answers!! Now my time to ask for help. I can solve this.... function?, loop?... didn't find a good example
# from a data.frame = data
# A:F are name of columns
x<-unique(data$A) # in the example c('var1','var2','var3','var4')
y<-unique(data$B) # in the example c('varA','varB')
z<-unique(data$C) # in the example c('var1a','var2a')
# I NEED TO REPEAT THIS (based on x_y_z combinations)#
x_y_z<-subset(data,data$A==x & data$B==y & data$C==z)
plot_x_y<-qic(y=D
,n=E
,x=F
,data=x_y_z
,chart = 'p')
The idea is to repeat the subsetting and make a plot for each x_y_z combination. The subset should have the name of the variables combinated separated by a '_'. I guess it should work like this:
var1_varA_var1a<-subset(data,data$A==var1 & data$B==varA & data$C==var1a)
plot_var1_varA<-qic(y=D
,n=E
,x=F
,data=var1_varA_var1a
,chart = 'p')
And obtain all this plots:
plot_var1_varA_var1a
plot_var1_varB_var1a
plot_var1_varA_var2a
plot_var1_varB_var2a
plot_var2_varA_var1a
plot_var2_varB_var1a
plot_var2_varA_var2a
plot_var2_varB_var2a
plot_var3_varA_var1a
plot_var3_varB_var1a
plot_var3_varA_var2a
plot_var3_varB_var2a
plot_var4_varA_var1a
plot_var4_varB_var1a
plot_var4_varA_var2a
plot_var4_varB_var2a
Sorry for the basic question, but I'm stuck on this.
Cristobal
Upvotes: 1
Views: 443
Reputation: 107757
Consider by
which slices like subset
but allows dataframe operations in its FUN
arg. And use a list of plots instead of many separately named plot objects.
plot_list <- by(data, data[, c("A","B","C")], FUN = function(df) {
qic(y = D,n = E,x = F, data = df, chart = 'p')
})
Should you want to rename this list:
dfnames <- expand.grid(x,y,z)
listnames <- vapply(1:nrow(dfnames), function(i)
paste(dfnames$Var1[[i]], dfnames$Var2[[i]], dfnames$Var3[[i]], sep="_"), character(1))
# [1] "var1_varA_var1a" "var2_varA_var1a" "var3_varA_var1a" "var4_varA_var1a" "var1_varB_var1a"
# [6] "var2_varB_var1a" "var3_varB_var1a" "var4_varB_var1a" "var1_varA_var2a" "var2_varA_var2a"
# [11] "var3_varA_var2a" "var4_varA_var2a" "var1_varB_var2a" "var2_varB_var2a" "var3_varB_var2a"
# [16] "var4_varB_var2a"
# RENAME LIST ELEMENTS
plot_list <- setNames(plot_list, paste0("plot_", listnames))
plot_list$plot_var1_varA_var1a # FIRST PLOT
plot_list$plot_var2_varA_var1a # SECOND PLOT
...
Upvotes: 1