Hello, You can loop in the subset you need by storing in a variable and looping on that variable with indexes:
seq.dat<-c(seq(7,10,1), seq(12,17,1)) for( i in 1:length(seq.dat) ) { j<-seq.dat[i] with(ssfa, twoplots(TO_POS, ssfa[[j]])) } Regards, Carlos. On Tue, Jan 19, 2010 at 4:53 PM, Ivan Calandra <ivan.calan...@uni-hamburg.de > wrote: > Hi again! > > I feel like I cannot do anything by myself but I would now like to plot > for all numeric variables I have (14 of them). I wanted to add a loop then. > The code is: > > ------ > #defines the function for the plots (as written by Duncan Murdoch) > twoplots <- function(x, y) { > ylab <- deparse(substitute(y)) # get the expression passed as y > xlab <- deparse(substitute(x)) # get the expression passed as x > hist(y, main=paste("Histogram of ", ylab), xlab=ylab) > boxplot(y ~ x, main=paste("Boxplot of", ylab, "by", xlab), xlab=xlab, > ylab=ylab) > } > > #run the function on ssfa with TO_POS as x and ssfa[[i]] as y, the > numerical variables are from column 7 to 21 > for (i in 7:21) { > with(ssfa, twoplots(TO_POS, ssfa[[i]])) > } > ------ > > I have therefore two questions: > - The code above works fine, but in the titles I get "Histogram of > ssfa[[i]]" instead of "Histogram of 'variable name'" > - What if I don't want to loop on all variables, but for example, > variables (=columns) 7 to 10 and 12 to 17? How do I give such breaks and > ranges? > I admit I'm thinking about it since yesterday and I don't have a clue... > > I hope you will be able to help me. > Thanks in advance, > Ivan. > > > > Duncan Murdoch a écrit : > > On 18/01/2010 9:02 AM, Ivan Calandra wrote: > >> Hi everybody! > >> > >> I'm trying to write a script to plot a histogram, a boxplot and a > >> qq-plot (under Windows XP, R2.10 if it matters) > >> > >> What I want to do: define the variables (x and y) to be used at the > >> very beginning, so that I don't have to change all occurrences in the > >> script when I want to plot a different variable. > >> > >> The dataset is called "ssfa". TO_POS is a categorical variable > >> containing the tooth position for each sample. Asfc is a numerical > >> variable. In my dataset, I have more variables but it wouldn't > >> change; I want to plot one numeric vs one category. Do I need to > >> supply some data? I don't think it's really necessary but let me know > >> if you would like to. > >> > >> The code of what I do up to now: > >> --- > >> x <- ssfa$TO_POS > >> y <- ssfa$Asfc > >> hist(y, main="Histogram of Asfc", xlab="Asfc") > >> boxplot(y~x, main="Boxplot of Asfc by TO_POS", xlab="TO_POS", > >> ylab="Asfc") > >> --- > >> > >> I would like something like: hist(y, main="Histogram of y", xlab="y") > >> but that will add "Asfc" where I write "y". > >> And the same for boxplot(y~x, main="Boxplot of y by x", xlab="x", > >> ylab="y") > >> I thought about something like: > >> --- > >> cat <- "TO_POS" > >> num <- "Asfc" > >> x <- paste("ssfa$", "TO_POS", sep="") > >> y <- paste("ssfa$", "Asfc", sep="") > >> hist(y, main=paste("Histogram of ", cat, sep=""), xlab=num) > >> --- > >> but it doesn't work since y is a string. I don't know how to get the > >> syntax correctly. I am on the right path at least?! > > > > I think you're on the wrong path. You want to write a function, and > > pass either x and y as arguments, or pass a formula containing both > > (the former is easier). For example, > > > > twoplots <- function(x, y) { > > ylab <- deparse(substitute(y)) # get the expression passed as y > > xlab <- deparse(substitute(x)) # get the expression passed as x > > hist(y, main=paste("Histogram of ", ylab), xlab=ylab) > > boxplot(y ~ x, main=paste("Boxplot of", ylab, "by", xlab), > > xlab=xlab, ylab=ylab) > > } > > > > Then > > > > with(ssfa, twoplots(TO_POS, Asfc)) > > > > will give you your plots. > > > > Duncan Murdoch > > > > [[alternative HTML version deleted]] > > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > > [[alternative HTML version deleted]]
______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.